考虑下面的代码示例,
if 'xpath' in request.args:
in = request.args['xpath']
xml = BytesIO(open("/file.xml").read())
for v, e in etree.iterparse(xml):
return e.text
以下XML文件
<a>
<c>
<d>content X</d>
</c>
<c>
<d>content Y</d>
</c>
</a>
并且in
变量收到带有curl的字符串/a/c[2]/d
,如下所示
curl http://localhost:5000/home?xpath=/a/c[2]/d
有没有办法从给定的字符串(xpath表达式)中返回元素文本(即能够理解我指的是哪个元素)?
答案 0 :(得分:1)
要返回位于in
的元素,您可以在已解析的find
上调用ElementTree
方法。
return etree.parse(xml).find(in).text
请注意,XPath表达式不能包含根元素本身,也不能包含起始斜杠,因此c[2]/d
应该可以解决问题。