É possível mostrar números de linha mais de 65535 quando você valida um arquivo XML usando LXML?

StackOverflow https://stackoverflow.com/questions/19826050

  •  05-07-2022
  •  | 
  •  

Pergunta

Eu tento validar um arquivo XML com cerca de 1 milhão de linhas usando LXML. Este é o meu código.

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())

Mas descobri que a saída sempre diz "65535: 0" se a linha de erro exceder 65535. isto é, é, ou seja,

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).

Portanto, não consigo identificar onde estão as linhas acima. Existe alguma solução?

Foi útil?

Solução

Isso parece ser um Bug em libxml, não está no próprio LXML Pervay, e existe desde 2006. Parece que ele não pode ser facilmente corrigido devido a problemas de compatibilidade com versões anteriores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top