¿Es posible mostrar números de línea más de 65535 cuando valida un archivo XML usando LXML?

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

  •  05-07-2022
  •  | 
  •  

Pregunta

Intento validar un archivo XML con alrededor de 1 millón de líneas usando LXML. Este es mi 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())

Pero descubrí que la salida siempre dice "65535: 0" si la línea por error excede 65535. es decir,

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

Así que no puedo identificar dónde están las líneas anteriores. ¿Hay alguna solución?

¿Fue útil?

Solución

Esto parece ser un error en libxml, no en lxml en sí mismo, y ha estado allí desde 2006. Parece que no se puede solucionar fácilmente debido a problemas de compatibilidad hacia atrás.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top