2011-09-14 21 views
1

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

tree = etree.XML(string)

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

は私がしようとした場合:

elem = tree.xpath('//text:p')
は、私がどれだけ私はので、私はそれらを反復処理することができます右の順にthooseサブ要素の両方とのリストを取得しますので、
XPathEvalError: Undefined namespace prefix

を取得しますか?

答えて

1

textは、ODF schemaで定義されている名前空間の略語であるためです。試してみてください

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

|は、組合演算子です。 LXML docsも参照してください。

+0

素晴らしい! Thnx。さて、どのようにしてそこにOR文を得て、pとtext:hの両方のテキストを取得しますか? –

+0

ああ、忘れてしまった。今すぐ答えに加えました。 –

+0

私はちょうどgoogle "xpath演算子"によってそれを見つけることができた。だから試してみるとすみません。しかし、私は昨夜、本当に不満でした。とにかくありがとう! :) –

関連する問題