Скажем, у меня есть этот образец XML.
<result>
<field k='field1'>
<value h='1'><text>text_value1</text></value>
</field>
<field k='field2'>
<value><text>text_value2</text></value>
</field>
<field k='field3'>
<value><text>some_text</text></value>
</field>
</result>
Используя python lxml, как я могу получить значение каждого поля для каждого набора результатов? Итак, в основном, я хочу перебирать все наборы результатов, затем перебирать каждое поле в этом наборе результатов и печатать текстовые данные.
Это то, что у меня есть до сих пор:
context = etree.iterparse(contentBuffer, tag='result')
for action, elem in context:
print elem.tag, elem.data
Любая помощь будет принята с благодарностью.
EDIT Вот код, который я придумал. Кажется немного неуклюжим необходимость дважды вызывать getparent() для чтения атрибута соответствующего текстового значения. Есть лучший способ сделать это?
for action, elem in context:
list = elem.xpath('//text')
print "result set:"
for item in list:
field = item.getparent().getparent().attrib['k']
value = item.text
print "\t%s = %s"%(field, value)