我正在尝试了解 lxml (这是新的)以及如何使用它来做我想做的事情。我有一个格式正确且有效的 XML 文件
<root>
<a>
<b>Text</b>
<c>More text</c>
</a>
<!-- some comment -->
<a>
<d id="10" />
</a>
</root>
类似这样的事情。现在我想广度优先地访问 children ,我能想到的最好的办法是这样的:
for e in xml.getroot()[0].itersiblings() :
print(e.tag, e.attrib)
然后从那里拿走它。然而,这给了我所有元素,包括评论
a {}
<built-in function Comment> {}
a {}
如何跳过评论?有没有更好的方法来迭代节点的直接子节点?
一般来说,与使用 iterparse()
等事件驱动的拉式解析相比,解析 XML 树的建议是什么?
最佳答案
这适用于您的情况
for child in doc.getroot().iterchildren("*"):
print(child.tag, child.attrib)
关于python - 如何使用 Python 在 lxml etree 上进行最佳迭代(广度优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430090/