在jinja2中为XPath转义引号

时间:2014-05-19 12:45:28

标签: python xpath jinja2

以下代码行给我带来了问题:

{% if xml.findall('count("routes/route//process")') > 0 %}

我收到此错误消息:

...
{% if xml.findall('count("routes/route//process")') > 0 %}
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 390, in findall
return ElementPath.findall(self, path, namespaces)
File "/usr/lib/python2.7/xml/etree/ElementPath.py", line 293, in findall
return list(iterfind(elem, path, namespaces))
File "/usr/lib/python2.7/xml/etree/ElementPath.py", line 263, in iterfind
selector.append(ops[token[0]](next, token))
KeyError: '('

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

ElementTree只有limited support for XPath expressionscount() 不支持

您必须切换到lxml library;与ElementTree兼容的实现,支持所有XPath 1.0。

或者,测试直接返回的元素数量:

{% if xml.findall('routes/route//process') %}

作为非空结果列表在布尔上下文中为true-thy。