2010-06-06 18 views
9

Estoy tratando de analizar un archivo xml usando lxml. xml.etree me permitió simplemente pasar el nombre del archivo como parámetro a la función parse, así que intenté hacer lo mismo con lxml.cómo pasar un archivo xml a lxml para analizar?

Mi código:

from lxml import etree 
from lxml import objectify 

file = "C:\Projects\python\cb.xml" 
tree = etree.parse(file) 

pero me sale el error:

Traceback (most recent call last): 
    File "cb.py", line 5, in <module> 
    tree = etree.parse(file) 
    File "lxml.etree.pyx", line 2698, in lxml.etree.parse (src/lxml/lxml.etree.c:4 
9590) 
    File "parser.pxi", line 1491, in lxml.etree._parseDocument (src/lxml/lxml.etre 
e.c:71205) 
    File "parser.pxi", line 1520, in lxml.etree._parseDocumentFromURL (src/lxml/lx 
ml.etree.c:71488) 
    File "parser.pxi", line 1420, in lxml.etree._parseDocFromFile (src/lxml/lxml.e 
tree.c:70583) 
    File "parser.pxi", line 975, in lxml.etree._BaseParser._parseDocFromFile (src/ 
lxml/lxml.etree.c:67736) 
    File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDo 
c (src/lxml/lxml.etree.c:63820) 
    File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.e 
tree.c:64741) 
    File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etr 
ee.c:64084) 
lxml.etree.XMLSyntaxError: AttValue: " or ' expected, line 2, column 26 

¿Qué estoy haciendo mal?

+0

Como dije en la respuesta aceptada, aquí no pasa nada con 'lxml', por lo que se reduce la validez de la pregunta. Tal vez un cambio de nombre del título de la pregunta evitaría la búsqueda incorrecta de problemas en este módulo. –

+0

@Joel - El título de mi pregunta no implica que haya algo incorrecto con 'lxml', solo que puede haber algún problema con la forma en que paso el archivo a lxml para analizar. Si puede sugerir un título alternativo, me complacerá complacerlo (su comentario no deja claro a qué cree que debería cambiarlo). – BeeBand

+0

Hum. Extraño, ahora no puedo ver nada malo con el título:/¡Tal vez me perdí la pregunta correcta, y acerté equivocadamente a la tuya! Y no puedo eliminar el downvote sin que edites la pregunta. Si haces un pequeño cambio para desbloquearlo, me gustaría corregir mi error. –

Respuesta

1

Lo que está haciendo mal es (1) no verificar si obtuvo el mismo resultado usando xml.etree en el mismo archivo (2) no leyendo el mensaje de error, que indica un error de sintaxis en la línea 2 del archivo, forma en sentido descendente desde cualquier problema de apertura de archivos

+0

John, ¿qué quiere decir con "el mismo resultado", el mismo resultado que qué? – BeeBand

+1

mismo resultado que con lxml, descartando lxml como problema –

0

Tiene un error de sintaxis en su XML Markup. No estás haciendo nada mal.

1

Me encontré con un mensaje de error similar esta mañana, y para mí la respuesta fue una DTD mal formada. En mi DTD, había una definición de atributo con un valor predeterminado que no estaba entre comillas: tan pronto como lo cambié, el error ya no ocurría.

0

lxml permite cargar un XML dañado mediante la creación de una instancia analizador con recover=True

etree.XMLParser(recover=True) 

Si bien esto no es lo ideal, yo utilizo para cargar un XML para la validación del esquema/dtd/schematron.

Cuestiones relacionadas