1

ODF ファイル内の content.xml を解析しようとしています。ファイルを文字列に読み込み、lxml.etree を持つツリー オブジェクトを取得しました。

ツリー = etree.XML(文字列)

しかし、今度は、text:a OR text:h であるすべてのサブ要素を見つける必要があります。前の質問で、XPath を使用できると言われました。私は試しましたが、毎回行き詰まりました。それらの要素の 1 つを見つけることさえできません。

私が試してみると:

elem = tree.xpath('//text:p')
私はちょうど得る
XPathEvalError: 未定義の名前空間プレフィックス

では、これらのサブ要素の両方を正しい順序で含むリストを取得して、それらを反復できるようにするにはどうすればよいですか?

4

1 に答える 1

1

これは、 ODF schematextで定義されている名前空間の省略形であるためです。試す

tree.xpath('//text:a | //text:h',
           namespaces={'text': 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'})

|セットユニオン演算子です。LXML ドキュメントも参照してください。

于 2011-09-14T20:39:57.233 に答える