解析XML python中的子节点

时间:2015-08-07 18:06:48

标签: python xml xpath xml-parsing

我有一个类似的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)

但是当我这样做时它会返回空白:    对于tree.xpath中的用户(&#34; / coureurs / coureur / hair&#34;): 它只返回头发。我该怎么办?

1 个答案:

答案 0 :(得分:1)

我仍然无法使用您提供的xml和代码重现该问题。但是好像你遗漏了很多xml,如果<table width="263" border="1"> <tr> <td><?php echo $row_Recordset1['name']; ?></td> <td><form id="form1" name="form1" method="post" action=""> <!-- NEW LINE BELOW --> <input type="hidden" name="id" value="<?php echo $row_Recordset1['id']; ?>" /> <input type="submit" name="borrar" id="borrar" value="Borrar" /> </form></td> </tr> </table> 不是xml(或它的直接子节点)的直接根,那么XPATH很可能不适合你。

在这种情况下,您可以使用以下XPATH来获取xml中的每个coureurs节点(即coureur节点的子节点) -

coureurs

这将为您提供xml中的所有//coureurs/coureur 标记元素,然后您可以迭代它以打印它的子文本。示例代码 -

<coureur>

示例/演示 -

for user in tree.xpath('//coureurs/coureur'):
    for child in user:
        print(child.text,end=" ")
    print()