gpt4 book ai didi

python - lxml xpath 如何处理xml实体

转载 作者:行者123 更新时间:2023-12-01 08:46:21 24 4
gpt4 key购买 nike

我使用 lxml (Python 3.7.1) 来解析包含 xml 实体的 xml 文档。我无法设法获得正确的语法来查询包含 xml 实体(' 等)的元素。
参见以下代码:

from lxml import etree

root = 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"]') # 4
if len(item) != 0:
print(len(item))
print(item)
name = item[0].xpath(".//@name")
print(name)
else:
print("Nothing")

当第 1 行取消注释时,代码可以正常工作。

当第 2 行(或第 3 行或第 4 行)取消注释(并且其他行被注释)时,找不到任何内容。

为什么会这样?

谢谢。

最佳答案

此处 ' 是 XML 文件中编码的一部分。

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

>>> root.xpath(""".//item[@name="hi'jk"]""")
[<Element item at 0x7f91b2b9ae88>]

关于python - lxml xpath 如何处理xml实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com