如何使用xml.etree解析外部实体,如lxml.etree
发布时间:2020-12-16 23:29:10 所属栏目:百科 来源:网络整理
导读:我有一个使用lxml.etree解析 XML的脚本: from lxml import etreeparser = etree.XMLParser(load_dtd=True,resolve_entities=True)tree = etree.parse('main.xml',parser=parser) 我需要load_dtd = True和resolve_entities = True有 emptyEntry;从globals.xm
我有一个使用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 = True和resolve_entities = True有& emptyEntry;从globals.xml解决: <?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 = True和resolve_entities = True. 是否有一个xml.etree方式来解决这些实体? 解决方法
lxml是一个适合这项工作的工具.
但是,如果你想使用stdlib,那么请为困难做好准备并看看XMLParser的UseForeignDTD方法.这是一个很好的(但是hacky)例子:Python ElementTree support for parsing unknown XML entities? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |