iterparse を使用して xml ドキュメントを解析しています。
from lxml import etree
import tempfile
content = """<root xmlns="blah.com">
<foo>
<attribute id="3" />
</foo>
<foo>
<structure>
<baz>
<x>g</x>
</baz>
</structure>
</foo>
</root>"""
src_file = tempfile.NamedTemporaryFile()
src_file.write(content)
src_file.flush()
context = etree.iterparse(
src_file.name,
events=("end", ),
tag="foo",
)
for event, element in context:
print event
print element
- 期待される結果: いくつか
end
のイベントが表示されます - 実際の結果: 何も起こらない
私が試したいくつかのこと:
- xml から名前空間を削除すると、正常に動作します。
- のようなプレフィックスを持つ名前空間を使用すると、正常に
xlmns:t="blah.com"
動作します。 - を削除する
tag="foo"
と、正常に動作します。
ただし、ベース タグとデフォルトの名前空間の両方を使用したいと考えています。これは iterparse のバグですか? 私は他に何か間違ったことをしていますか?
編集: コードを編集して、ident エラーなしでコピーして貼り付けることができるようにしました。