구문 분석 할 XML이 있는데, 이는 나에게 매우 까다로운 증명입니다.Python, lxml - 형제 태그 (그랜드) 자식 텍스트를 가져옵니다.
<bundles>
<bundle>
<bitstreams>
<bitstream>
<id>1234</id>
</bitstream>
</bitstream>
<name>FOO</name>
</bundle>
<bundle> ... </bundle>
</bundles>
나는이 XML을 반복하고 이름 요소의 값이 'FOO'인 번들의 비트 스트림의 내부의 모든 ID 값을 찾을 싶습니다. 나는 'FOO'라는 이름의 번들에는 관심이 없으며, 묶음에는 몇 개의 번들과 비트 스트림이있을 수 있습니다.
이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
이 모든 아이디 값을 출력 : 나는 FOO 번들을 찾을 tree.findall('./bundle/name')
를 사용하고 있지만, 이것은 단지 내가 ID 값을 통해 단계 수없는 목록을 반환
번들 'FOO'의 것들은 아닙니다.
내가이 나무를 통해 반복 할 수있는 방법은 이름 FOO와 번들을 찾아 값이 그 안에 중첩 된 ID를이 번들 노드를 가지고 수집? 여기서 XPath 인수가 올바르지 않습니까?
저는 파이썬에서 lxml
바인딩으로 작업하고 있습니다. 그러나 모든 XML 파서는 괜찮을 것이라고 생각합니다. 이것들은 큰 XML 트리가 아닙니다.
당신이 우리에게 지금까지 가지고있는 코드를 게재 할 수 있습니까? –