为了账号安全,请及时绑定邮箱和手机立即绑定

lxml xpath 如何处理xml实体

lxml xpath 如何处理xml实体

精慕HU 2021-08-17 15:35:02
我使用 lxml (Python 3.7.1) 来解析包含 xml 实体的 xml 文档。我不能设法得到正确的语法来查询一个包含元素的XML实体(&quot,&apos;,等)。请参阅以下代码:from lxml import etreeroot = etree.XML('''<root>    <item name="abcd">        <ssitem att="efg"/>    </item>    <item name="hi&apos;jk">        <ssitem att="lmn"/>    </item></root>''')item = root.xpath(".//item[@name='abcd']") # 1# item = root.xpath(".//item[@name='hi&apos;jk']") # 2# item = root.xpath(".//item[@name='hi'jk']") # 3# item = root.xpath('.//item[@name="hi''jk"]') # 4if len(item) != 0:    print(len(item))    print(item)    name = item[0].xpath(".//@name")    print(name)else:    print("Nothing")  当第 1 行取消注释时,代码工作正常。当第 2 行(或第 3 行或第 4 行)被取消注释(并且其他行被注释)时,什么也找不到。为什么会这样?
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

这&apos;是XML 文件中编码的一部分。


在 XPath 查询中,您应该使用:


>>> root.xpath(""".//item[@name="hi'jk"]""")

[<Element item at 0x7f91b2b9ae88>]


查看完整回答
反对 回复 2021-08-17
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

考虑使用最后一个 #4 选项转义单个撇号:


item = root.xpath('.//item[@name="hi\'jk"]') # 4

item


# [<Element item at 0xbe25608>]


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号