Python xml.dom.minidom.parse() 函数忽略 DTD
我有以下的Python代码:
import xml.dom.minidom
import xml.parsers.expat
try:
domTree = ml.dom.minidom.parse(myXMLFileName)
except xml.parsers.expat.ExpatError, e:
return e.args[0]
我用这个代码来解析一个XML文件。虽然它能很轻松地发现一些简单的XML错误,比如标签不匹配,但它完全忽略了XML文件顶部指定的DTD:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServerConfig SYSTEM "ServerConfig.dtd">
所以它没有注意到一些必须的元素缺失,比如说。我该怎么开启DTD检查呢?
5 个回答
2
为了记录一下,我现在的代码是这样的:
from lxml import etree
try:
parser = etree.XMLParser(dtd_validation=True)
domTree = etree.parse(myXMLFileName, parser=parser)
except etree.XMLSyntaxError, e:
return e.args[0]