※ ChatGPTを利用し、要約された質問です(原文:XMLで特定の兄弟のノードの数を取り出したい(Rubyを使用))
XMLで特定の兄弟のノードの数を取り出す方法(Rubyを使用)
このQ&Aのポイント
Rubyを使用してXMLを加工するプログラムを作っている場合、特定の兄弟のノードの数を取り出すことができます。
getElementByTagName()メソッドは指定したタグをオブジェクト内から全て抽出し、配列形式のコレクションに格納してしまうため、兄弟のノードの数を取得するためには別の方法を使用する必要があります。
兄弟のノードの数を取得するためには、@root.getElementsByTagName("node")で取得した全てのノードの中から目的のノードの次のノードを参照することで実現できます。
XMLで特定の兄弟のノードの数を取り出したい(Rubyを使用)
はじめまして。大学の卒業研究で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の数を取得するにはどのようにしたらよいのでしょうか。
ご教授お願いいたします。