2

我正在使用 python 2.7 和 lxml 来验证带有 RelaxNG 的大型 xml 文件。当 xml 无法正确验证时,我会得到关于问题位置和性质的不准确结果。通常它只是说:“元素元素名称无法验证内容” - 其中元素名称只是最顶层元素的名称。

当我在 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 获得更准确的结果?

4

0 回答 0