XPath字符串作为输入

时间:2014-04-04 18:47:52

标签: python xml xpath flask lxml

考虑下面的代码示例,

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表达式)中返回元素文本(即能够理解我指的是哪个元素)?

1 个答案:

答案 0 :(得分:1)

要返回位于in的元素,您可以在已解析的find上调用ElementTree方法。

return etree.parse(xml).find(in).text

请注意,XPath表达式不能包含根元素本身,也不能包含起始斜杠,因此c[2]/d应该可以解决问题。