解析 XML python 中的孩子
Parse childs in XML python
我有一个 XML 代码,例如:
<?xml version='1.0' encoding="UTF-8"?>
<coureurs>
<coureur>
<nom>Patrick</nom><hair>Inexistants</hair>
</coureur>
</coureurs>
我想打印:
Patrick inexistents
Etc...
For now my code is :
from lxml import etree
tree = etree.parse(file.xml)
for coureur in tree.xpath("/coureurs/coureur/nom"):
print(user.text)
但它 returns 空白,当我这样做时:
对于 tree.xpath("/coureurs/coureur/hair") 中的用户:
它只有returns头发。我该怎么办?
我仍然无法使用 xml 和您提供的代码重现该问题。但是似乎您遗漏了很多 xml ,如果 coureurs
不是 xml 的直接根(或其直系子代)。
在这种情况下,您可以使用以下 XPATH 获取 xml 中的每个 coureur
节点(即 coureurs
节点的子节点)-
//coureurs/coureur
这将为您提供 xml 中的所有 <coureur>
标记元素,然后您可以迭代它以打印它的子文本。示例代码-
for user in tree.xpath('//coureurs/coureur'):
for child in user:
print(child.text,end=" ")
print()
Example/Demo -
In [26]: s = """<?xml version='1.0' encoding="UTF-8"?>
....: <coureurs>
....: <coureur>
....: <nom>Patrick</nom><hair>Inexistants</hair>
....: </coureur>
....: </coureurs>"""
In [28]: tree = etree.fromstring(s.encode())
In [35]: for user in tree.xpath('//coureurs/coureur'):
....: for child in user:
....: print(child.text,end=" ")
....: print()
....:
Patrick Inexistants
我有一个 XML 代码,例如:
<?xml version='1.0' encoding="UTF-8"?>
<coureurs>
<coureur>
<nom>Patrick</nom><hair>Inexistants</hair>
</coureur>
</coureurs>
我想打印:
Patrick inexistents
Etc...
For now my code is :
from lxml import etree
tree = etree.parse(file.xml)
for coureur in tree.xpath("/coureurs/coureur/nom"):
print(user.text)
但它 returns 空白,当我这样做时: 对于 tree.xpath("/coureurs/coureur/hair") 中的用户: 它只有returns头发。我该怎么办?
我仍然无法使用 xml 和您提供的代码重现该问题。但是似乎您遗漏了很多 xml ,如果 coureurs
不是 xml 的直接根(或其直系子代)。
在这种情况下,您可以使用以下 XPATH 获取 xml 中的每个 coureur
节点(即 coureurs
节点的子节点)-
//coureurs/coureur
这将为您提供 xml 中的所有 <coureur>
标记元素,然后您可以迭代它以打印它的子文本。示例代码-
for user in tree.xpath('//coureurs/coureur'):
for child in user:
print(child.text,end=" ")
print()
Example/Demo -
In [26]: s = """<?xml version='1.0' encoding="UTF-8"?>
....: <coureurs>
....: <coureur>
....: <nom>Patrick</nom><hair>Inexistants</hair>
....: </coureur>
....: </coureurs>"""
In [28]: tree = etree.fromstring(s.encode())
In [35]: for user in tree.xpath('//coureurs/coureur'):
....: for child in user:
....: print(child.text,end=" ")
....: print()
....:
Patrick Inexistants