我正在使用python 2.7和lxml来验证带有RelaxNG的大型xml文件。当xml没有正确验证时,我会得到关于问题的位置和性质的不准确的结果。通常它只是说:“元素ElementName无法验证内容” - 其中ElementName只是最顶层元素的名称。
当我使用与Java相同的xml和相同的relaxng文件时,我得到错误所在的确切行号。 这是我正在使用的代码:
from lxml import etree as ET
def ValidateXMLWithRNG(rng_file, xml_file):
isXMLValid = False
try:
doc = ET.ElementTree()
doc.parse(xml_file)
relaxng = ET.RelaxNG(file=rng_file)
isXMLValid = relaxng.assert_(doc)
except BaseException as ex:
log = relaxng.error_log
print log.last_error
return isXMLValid
有没有办法从lxml和RelaxNG获得更准确的结果?