python - 如果找不到属性,如何使 XPath 在 Python 中返回 'None'?

标签 python xml attributes lxml

这是对先前问题的一种补充 asking the same things for the text values in an XML node .

lxml 可以在引用示例中通过 XPath(例如 //book/*)测试标签的存在。 有了这个,我可以测试节点是否存在,如果不存在则返回 None,如果存在则返回文本值。

但是,您似乎不能仅以相同的方式测试属性,例如//book/@author 将直接返回一个包含所有书籍中 author 属性值的列表,但没有 None,只是一个较短的列表。

有没有办法在没有给出作者属性的情况下取回所有作者都没有的列表?

最佳答案

不,XPath 中没有这样的构造。

您可以分两步执行此操作:

  1. 像您目前所做的那样,使用 XPath 获取所有书籍元素(例如 //book/*)
  2. 迭代这些元素并检查它们是否每个都有作者属性(例如 book.get('author')if 'author' in book.attrib:)

关于python - 如果找不到属性,如何使 XPath 在 Python 中返回 'None'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026302/

相关文章:

java - 将对象从 servlet 传递到另一个 servlet

c - 在 C 中使用属性时正确的编码实践是什么?

python - 为什么 Python 2.7 不允许我在 yield 之后隐式地重新引发异常?

python - 如何修复 Graphite 中的守护进程导入错误?

python - 字节消息参数错误

xml - document.evalute 函数给出异常

javascript - 使用 native JavaScript,如果对象具有特定的 CSS 类,则更改对象的标题属性

python - 如何将创建的 Zip 文件保存到 python 中的文件系统?

php - 警告 'SimpleXMLElement::addChild(): 未终止的实体引用

python - 在 xmltodict 中捕获 ExpatError