Pregunta

Estoy tratando de analizar un archivo XML con expatriados pitón. Tengo la siguiente línea en mi archivo XML:

<Action>&lt;fail/&gt;</Action>

expatriado identifica las etiquetas de inicio y fin, pero convierte la etiqueta < al menos de carácter y lo mismo para el mayor de carácter y por lo tanto lo analiza así:

resultado:

START 'Action'
DATA '<'
DATA 'fail/'
DATA '>'
END 'Action'

en lugar de la deseada:

START 'Action'
DATA '&lt;fail/&gt;'
END 'Action'

Me gustaría tener el resultado deseado, ¿cómo puedo evitar inmigrante de echar a perder?

¿Fue útil?

Solución

Expat no hace desordenar, &lt; es simplemente la codificación XML para la < carácter. Por el contrario, si expatriado devolvería el &lt; literal, esto sería un error con respecto a la especificación XML. Dicho esto, por supuesto, puedes obtener la versión escapado hacia atrás mediante el uso de xml.sax.saxutils.escape:

>>> from xml.sax.saxutils import escape
>>> escape("<fail/>")
'&lt;fail/&gt;'

El analizador de expatriados también es libre de informar todos los datos de cadena en trozos lo que parece en forma, así que hay que concatenar por sí mismo.

Otros consejos

Tanto SAX y Stax analizadores son libres para romper las cadenas de la manera que sea conveniente para ellos (aunque StAX tiene un modo de COALESCE para forzarlo a ensamblar las piezas para usted).

La razón es que a menudo es posible escribir software en ciertos casos que los arroyos y no tiene que preocuparse por la sobrecarga de volver a ensamblar los fragmentos de cadenas.

Por lo general se acumulan texto en una variable y utilizar los contenidos cuando veo que el próximo evento startElement o EndElement. En ese momento, también se restablece la variable de texto acumulado para vaciar.

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