プロが教えるわが家の防犯対策術!

 はじめまして。大学の卒業研究でXMLを利用していたのですが,手詰まりとなってしまいましたので,皆様のご教授に預かりたい思い書き込みました。
 RubyでXMLを加工するプログラムを作っているのですが(Ruby1.6,DOM:XML Parser 0.6.8 http://www.yoshidam.net/Ruby_ja.html#xmlparser),次のようなことしたいと考えています。

<question_solution_tree>
 <node name="ハード・周辺機器"> ←
  <node name="ハード・パソコンパーツ">
   <category>ID-c0001</category>
   <category>ID-c0002</category>
  </node>
  <node name="周辺機器">
   <category>ID-c0007</category>
   <category>ID-c0008</category>
  </node>
  <category>ID-c0015</category>
 </node>
 <node name="オペレーティングシステム(OS)"> ←
  <category>ID-c0016</category>
  <category>ID-c0017</category>
 </node>
 <category>ID-c0019</category>
 <category>ID-c0020</category>
</question_solution_tree>

 このようなXMLがあり,矢印部1階層目のnodeの数(2つ)のみを調べたいと思い,
  @root.getElementsByTagName("node").length
で,nodeの数を取得したのですが,子孫すべてのnodeの数(4つ)を取得してしまいます。getElementByTagName()メソッドは指定したタグをオブジェクト内から全て抽出し、配列形式のコレクションに格納してしまうからです。子孫ではなく,兄弟の矢印の部分のnodeの数を取得するにはどのようにしたらよいのでしょうか。
 ご教授お願いいたします。

A 回答 (1件)

実行環境がないので試していませんが、一番簡単なのは


@root.getElementsByTagName("node").length を
@root.getElementsByTagName("question_solution_tree/node").length に
すれば可能と思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!