如何在xpath查询中转义正斜杠字符?我的标签包含一个网址,所以我需要能够做到这一点。我在python中使用lxml。
或者,xpath是否可以查询路径的子字符串?示例如下:
xml="""
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsa="http://schemas.google.com/gsa/2007">
<gsa:content name="reportName">bbb</gsa:content>
<gsa:content name="collectionName">default_collection</gsa:content>
<gsa:content name="reportDate">date_3_25_2009</gsa:content>
</entry>
"""
当我运行以下内容时:
tree=fromstring(xml)
for elt in tree.xpath('//*'):
elt.tag
它返回:
'{http://www.w3.org/2005/Atom}entry'
'{http://schemas.google.com/gsa/2007}content'
'{http://schemas.google.com/gsa/2007}content'
'{http://schemas.google.com/gsa/2007}content'
运行tree.xpath('/entry')
会返回一个空列表。
我需要能够查询“{http://www.w3.org/2005/Atom}entry”作为标记,或者在标记的任何位置查询“条目”。
答案 0 :(得分:3)
如果你想要一个http://schemas.google.com/gsa/2007
命名空间中的元素,你需要像这样搜索它:
import lxml.etree as et
xml="""
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsa="http://schemas.google.com/gsa/2007">
<gsa:content name="reportName">bbb</gsa:content>
<gsa:content name="collectionName">default_collection</gsa:content>
<gsa:content name="reportDate">date_3_25_2009</gsa:content>
</entry>
"""
NS = {'rootns': 'http://www.w3.org/2005/Atom',
'gsa': 'http://schemas.google.com/gsa/2007'}
tree = et.fromstring(xml)
for el in tree.xpath('//gsa:content', namespaces=NS):
print el.attrib['name']
print len(tree.xpath('//rootns:entry', namespaces=NS))