5

lxmlを使用して、約100万行のxmlファイルを検証しようとしています。これは私のコードです。

import codecs
import lxml.etree as ET

xsd_file = codecs.open(r'test.xsd', 'rb', 'utf-8')
xml_file = codecs.open(r'test.xml', 'rb', 'utf-8')

xmlschema_doc = ET.parse(xsd_file)
xmlschema = ET.XMLSchema(xmlschema_doc)

doc = ET.parse(xml_file)

print (xmlschema.error_log.filter_from_errors())

しかし、エラーの行が 65535 を超える場合、出力には常に「65535:0」と表示されることがわかりました。つまり、

file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s). 
file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s).
file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s).

そのため、上記の行がどこにあるかを特定できません。解決策はありますか?

4

1 に答える 1

2

これは、LXML 自体の persayではなく、 libXML のバグのようで、2006 年から存在しています。下位互換性の問題のため、簡単には修正できないようです。

于 2013-11-15T00:14:42.323 に答える