lxml RelaxNG验证给出了不精确的结果

2024-06-25 06:59:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python2.7和lxml来验证一个带有RelaxNG的大型xml文件。当xml没有正确验证时,我得到的结果并不准确,因为问题的位置和性质。通常它只是说:“Element ElementName failed to validate content”(Element 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得到更精确的结果?在


Tags: 文件logdocaserrorxmlelementlxml