Найти - Пользователи
Полная версия: element tree и формат документа
Начало » Python для экспертов » element tree и формат документа
1
nightfog
задача элементарная получить в stdin кусок xml и найти значение тега ну или тегов

from xml.etree import ElementTree as ET
data = sys.stdin.read()
element = ET.XML(str(data))


tag="name1"

for subelement in element:
val = subelement.findtext(tag)
if not val == None:
print val
все работает если структура документа выглядит так
<xml>
<sub>
<name1>value1</name1>
<name2>value2</name2>
</sub>
</xml>
но если документ приходит в виде

<xml>
<name1>value1</name1>
<name2>value2</name2>
</xml>
findtext выдает значение None
o7412369815963
У вас документ не валидный - name2 не закрыт.
вот пример по чтению xml
nightfog
name2 закрыт это я опечатался , проблема именно в иерархии, вообщем я забил на element tree и сделал через minidom все работает
pyuser
nightfog
проблема именно в иерархии, вообщем я забил на element tree
нет проблем с иерархией (проблема в Вашем коде), в общем зря на element tree забили, minidom'у до него как пешком до Шанхая :)
from xml.etree import ElementTree as ET

xml1 = """\
<xml>
<sub>
<name1>value1</name1>
<name2>value2</name2>
</sub>
</xml>
"""

xml2 = """\
<xml>
<name1>value1</name1>
<name2>value2</name2>
</xml>
"""

dom = ET.XML(xml1)
for node in dom.iterfind(".//name1"):
print(node.tag, node.text)

dom = ET.XML(xml2)
for node in dom.iterfind(".//name1"):
print(node.tag, node.text)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB