gpt4 book ai didi

python - 如何使用 xml.etree 解析外部实体,如 lxml.etree

转载 作者:数据小太阳 更新时间:2023-10-29 01:59:03 29 4
gpt4 key购买 nike

我有一个使用 lxml.etree 解析 XML 的脚本:

from lxml import etree

parser = etree.XMLParser(load_dtd=True, resolve_entities=True)
tree = etree.parse('main.xml', parser=parser)

我需要 load_dtd=Trueresolve_entities=Trueglobals.xml 解析 &emptyEntry;:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE map SYSTEM "globals.xml" [
<!ENTITY dirData "${DATADIR}">
]>
<map
xmlns:map="http://my.dummy.org/map"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsschemaLocation="http://my.dummy.org/map main.xsd"
>

&emptyEntry; <!-- from globals.xml -->

<entry><key>KEY</key><value>VALUE</value></entry>
<entry><key>KEY</key><value>VALUE</value></entry>
</map>

使用 globals.xml

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY emptyEntry "<entry></entry>">

现在我想从非标准的 lxml 转移到标准的 xml.etree。但是我的文件失败了,因为 xml.etree 不支持 load_dtd=Trueresolve_entities=True

是否有 xml.etree 方法来解析这些实体?

最佳答案

我的诀窍是使用外部程序xmllint

proc = subprocess.Popen(['xmllint','--noent',fname],stdout=subprocess.PIPE)
output = proc.communicate()[0]
tree = ElementTree.parse(StringIO.StringIO(output))

关于python - 如何使用 xml.etree 解析外部实体,如 lxml.etree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731633/

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