2

私はPython2.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からより正確な結果を得る方法はありますか?

4

0 に答える 0