我有一個XML來解析這對我來說非常棘手。Python,lxml - 獲取兄弟標籤的(大)孩子的文本
<bundles>
<bundle>
<bitstreams>
<bitstream>
<id>1234</id>
</bitstream>
</bitstream>
<name>FOO</name>
</bundle>
<bundle> ... </bundle>
</bundles>
我想通過這個XML迭代並找到所有ID的比特流內值的束其中名元素的值是「富」。我對任何未命名爲「FOO」的軟件包都不感興趣,並且軟件包中可能包含任意數量的軟件包和任意數量的比特流。
我一直在使用tree.findall('./bundle/name')
找到FOO束但這只是返回一個列表,我不能爲ID值步:
for node in tree.findall('./bundle/name'):
if node.text == 'FOO':
id_values = tree.findall('./bundle/bitstreams/bitstream/id')
for value in id_values:
print value.text
此打印出所有 id值,而不是捆綁'FOO'的那些。
我怎樣才能通過此樹遍歷,找到束與名 FOO,藉此束節點和收集ID嵌套在它值?這裏的XPath參數是不正確的嗎?
我正在Python中工作,與lxml
綁定 - 但我相信任何XML解析器都會好的;這些不是大型的XML樹。
你能告訴我們你到目前爲止的代碼? –