は考える:特定の属性値を持つxml要素のデータを選択する方法は?
<foo>
<bar key="true">text1</bar>
<bar key="false">text2</bar>
<bar key="true">text3</bar>
<bar key="true">text4</bar>
</foo>
を私はキー属性は=「false」のバー要素のテキストを取得したいです。
私のアプリケーションは、GAEのPython 2.5.5です。 XMLはtrue xmlではありませんが、ElementTreeとしてロードしてデータを正常に取得できます。
コード例:
result = urllib2.urlopen(url).read()
xml = ElementTree.fromstring(result)
str = xml.find("./bar").attrib['key']
最初の値を取得します。私は動作するはずだと思う様々なxpathクエリを試しましたが、明らかに構文が間違っています。
UPDATE:
str = xml.findtext("./bar[@key='false']")
がエラーを例外:
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/xml/etree/ElementPath.py", line 93, in __init__
"expected path separator (%s)" % (op or tag)
SyntaxError: expected path separator ([)
findtextはxpathを使用する奇妙な方法のようです。特に、http://stackoverflow.com/questions/8692/how-to-use-xpath-in-pythonが別の方法を示していると考えます。 –
Merydith:基本的なElementTree APIではなく、 'lxml'のような完全なXPathエンジンを使用してください。 –