次のXMLデータからライターとアーティスト情報を収集する最適な方法を見つける必要があります。 comic
ノードは複数回表示され、1つの漫画本のデータが含まれています。特定の兄弟コンテンツに応じて兄弟の子供を得る方法
私は職業、作家、芸術家などによって適切な人を掴むことができません。各コミックの作家とアーティストは時々複数あります。私の計画は、それぞれをリストに追加/追加することです。
この1冊の漫画では、すべての作家とアーティストの表示名を取得する必要がありますが、仕事の機能(作家など)は人名の兄弟です。ここで
は私が持っているものですが、動作しません:
writer = []
penciler = []
doc.xpath('//comic').each do |main_element|
main_element.xpath("mainsection/credits/credit/role[@id='dfWriter']").each do |n|
writer << n.xpath('person/displayname').text
end
main_element.xpath("mainsection/credits/credit/role[@id='dfPenciler']").each do |n|
penciler << n.xpath('person/displayname').text
end
end
p "Writer(s): ",writer
p "Penciler(s): ",penciler
これは、XMLファイル/データです:
<comic>
<id>3398</id>
<index>195</index>
<mainsection>
<title>Mind Games</title>
<myrating>0</myrating>
<myrating>
<displayname>0</displayname>
<sortname>0</sortname>
</myrating>
<pagecount>32</pagecount>
<credits>
<credit>
<role id="dfWriter">Writer</role>
<roleid>dfWriter</roleid>
<person>
<displayname>Will Pfeifer</displayname>
<sortname>Pfeifer, Will</sortname>
<lastname>Pfeifer</lastname>
<firstname>Will</firstname>
</person>
</credit>
<credit>
<role id="dfWriter">Writer</role>
<roleid>dfWriter</roleid>
<person>
<displayname>John Byrne</displayname>
<sortname>Byrne, John</sortname>
<lastname>Byrne</lastname>
<firstname>John</firstname>
</person>
</credit>
<credit>
<role id="dfPenciler">Penciller</role>
<roleid>dfPenciler</roleid>
<person>
<displayname>John Byrne</displayname>
<sortname>Byrne, John</sortname>
<lastname>Byrne</lastname>
<firstname>John</firstname>
</person>
</credit>
</credits>
</mainsection>
</comic>
私が持っているコードは私に望ましい結果を与えるものではありません。私は "Getting the siblings of a node with Nokogiri"を見つけましたが、私は反復し、それぞれの兄弟をつかむ必要があります。
<roleid>dfWriter</roleid>
または<role id="dfWriter">Writer</role>
で検索することができます。
私の予想出力は次のようになります。
Writer(s): Will Pfeifer, John Byrne
Penciler(s): John Byrne
:
あなたが簡単に使用可能な形でノードセットのためのすべてのテキストをしたい場合は、各ノードからそれを抽出します。これを考慮してください。ルートノードとして '漫画'を表示しますが、 '漫画'は検索方法ではありません。 –