3

我正试图围绕 lxml (这是新的)以及如何使用它来做我想做的事情。我有一个格式正确且有效的 XML 文件

<root>
  <a>
    <b>Text</b>
    <c>More text</c>
  </a>
  <!-- some comment -->
  <a>
    <d id="10" />
  </a>
</root>

像这样的东西。现在我想以广度优先访问孩子们,我能想到的最好的办法是这样的:

for e in xml.getroot()[0].itersiblings() :
    print(e.tag, e.attrib)

然后从那里拿走。但是,这给了我包括评论在内的所有元素

a {}
<built-in function Comment> {}
a {}

如何跳过评论?有没有更好的方法来迭代节点的直接子节点?

一般来说,解析 XML 树与使用事件驱动的拉式解析的建议是什么iterparse()

4

1 回答 1

4

这适用于您的情况

for child in doc.getroot().iterchildren("*"):
    print(child.tag, child.attrib)
于 2013-03-15T14:46:46.587 回答