2012-07-26 13 views
5

Python 2.6.5 xml.etree.ElementTreeライブラリを使用していくつかの問題が発生しています。具体的には、Iセットアップ以下Pythonのxml.etree.ElementTreeリーフ要素の予期しないブール動作

>>> import xml.etree.ElementTree as etree 
>>> xml = etree.fromstring("<a><b><c>xy</c></b></a>") 

のような単純なXML要素iが内側の要素ノードにアクセスして、ライブラリに問題、例えば持っていない場合:しかし、私は奇妙に遭遇しています

>>> etree.tostring(xml.find('b')) 
'<b><c>xy</c></b>' 
>>> xml.find('b') == None 
False 
>>> bool(xml.find('b')) 
True 

をリーフ要素ノードのブール解釈参照:

>>> etree.tostring(xml.find('b/c')) 
'<c>xy</c>' 
>>> xml.find('b/c') == None 
False 
>>> bool(xml.find('b/c')) 
False 

注最後のコマンドで、要素xml.find( 'B/C')が明らかに非なしであり、と評価されます。私はイディオムを使用することができないので、特に厄介です。リーフ要素が存在するかどうかを確認するには、イディオムを使用できないので、特に迷惑です。 ('xml.find(' b/c ')を明示的にチェックする必要があります!=なし'

誰かがこれを説明することができますか?

+0

補足:他のPythonライブラリにxmlを処理するよう求めているわけではありません。指定したライブラリパッケージの動作を理解したいだけです。 – MRA

答えて

6

申し訳ありませんが、この質問を提出した後、私は、Pythonのドキュメントの解説を明示しました:http://docs.python.org/release/2.6.5/library/xml.etree.elementtree.html#the-element-interface、最後のセクションです。

注意:要素オブジェクトは、非ゼロ()メソッドを定義しないので、無サブ要素を持つ要素は、としてFalseをテストします。

ご迷惑をおかけして申し訳ありません。

関連する問題