python - 如何为具有特定属性值的xml元素选择数据?

标签 python xml xpath elementtree

给定:

<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 ([)

最佳答案

我可能是错的,但我不认为“./bar[@key='false']”符号在 Python 2.5.5 中有效(或者至少不适用于随附的 ElementTree用它)。我在 Python 2.6.5 中观察到同样的问题,但它在 Python 2.7.1 中确实有效。我想您将不得不使用另一个库或尝试使用 Python 2.7 的“实验性”GAE。

关于python - 如何为具有特定属性值的xml元素选择数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4574583/

相关文章:

java - Android - 使用相同的 xml 文件在 Activity 和屏幕之间切换

python - 如何使用scrapy获取href及相关信息?

Python 绘制点上方和下方具有不同值的误差线

java - android java xml,ids不被识别

python - 如何重用 Python 类中的返回值,而无需每次都重新运行该函数?

xml - xsl :sort does not work together with xsl:choose or if

java - XPath lower-case() 获取小写值的集合

java - 查找 <li> 元素中同名的最后一个链接

python - 无法使用python脚本在字典中输入字符

python - Pandas DataFrame 到 Excel : Vertical Alignment of Index