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 に答える