【发布时间】:2011-06-02 06:06:21
【问题描述】:
给定:
<foo>
<bar key="true">text1</bar>
<bar key="false">text2</bar>
<bar key="true">text3</bar>
<bar key="true">text4</bar>
</foo>
我想获取键属性 = "false" 的 bar 元素的文本。
我的应用程序是 GAE 上的 Python 2.5.5。 XML 不是真正的 xml,但我可以将其作为 ElementTree 加载并正常获取数据。
代码示例:
result = urllib2.urlopen(url).read()
xml = ElementTree.fromstring(result)
str = xml.find("./bar").attrib['key']
获取第一个值。我尝试了各种我认为应该可以工作的 xpath 查询,但我显然语法错误。
更新:
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 的奇怪方式,尤其是考虑到 stackoverflow.com/questions/8692/how-to-use-xpath-in-python 显示了不同的方法。
-
Merydith:请使用像
lxml这样的完整 XPath 引擎,而不是基本的 ElementTree API。
标签: python xml xpath elementtree