tow*_*owi 5 python xml lxml elementtree xml-entities
我有一个脚本,使用lxml.etree以下方法解析XML :
from lxml import etree
parser = etree.XMLParser(load_dtd=True, resolve_entities=True)
tree = etree.parse('main.xml', parser=parser)
Run Code Online (Sandbox Code Playgroud)
我需要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>
Run Code Online (Sandbox Code Playgroud)
同 globals.xml
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY emptyEntry "<entry></entry>">
Run Code Online (Sandbox Code Playgroud)
现在我想从非标准lxml转向标准xml.etree.但这与我的文件失败,因为load_dtd=True并且resolve_entities=True不受支持xml.etree.
是否有xml.etree解决这些实体的问题?
lxml 是完成这项工作的正确工具。
但是,如果您想使用 stdlib,那么请做好迎接困难的准备,并查看 XMLParser 的 UseForeignDTD 方法。这是一个很好的(但很hacky)示例:Python ElementTree support for parsing Unknown XMLEntity?
| 归档时间: |
|
| 查看次数: |
3287 次 |
| 最近记录: |