こんにちは、Python 2.7 で (1.3) を
使用しており、XPath 機能を楽しんでいます
が、検索結果の 1 つに驚きました。 ElementTree
私のXMLの例:
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
</BackEndCompatibility>
</FECS>
</OTF>
質問 1:最初に見つかった要素を取得するため
に使用する場合findall
version = "2.2.0.0"
found = list(txml.findall(".//BackEnd[@version='%s']" % version))
return found and found[0] or None
何も見つかりません。
ただし、要素にサブBackEnd
要素が含まれるように XML ファイルを変更すると、
<BackEnd state="disabled" version="2.2.0.0">
<any_dummy_element/>
</BackEnd>
検索された要素が適切に見つかります。
あなたはそのような行動に直面しましたか?
私は sth を間違っていますか、これはElementTree
実装のバグですか?
質問 2:
もう 1 つの問題は ですxmlns
。
XML の最初の行を次のように変更したとしますxmlns
。
<OTF xmlns="http://si-wiki/OTFCompatibility">
</OTF>
そのような場合、検索文字列を次のように変更する必要があります。
".//{http://si-wiki/OTFCompatibility}BackEnd[@version='%s']"
解析中に xmlns を無視し、すべての要素の名前 (ルートを含む) をプレフィックスがないように扱うように ElementTree に指示する方法はありますか?
よろしく、
ズビグニエフ