[pyar] Salto de linea en XML

Roberto Alsina ralsina en netmanagers.com.ar
Mie Dic 12 16:50:33 ART 2012


On 12/12/12 16:44, Hugo Osvaldo Barrera wrote:
> On 2012-12-12 15:50, Roberto Alsina wrote:
>> On 12/12/12 15:35, Hugo Osvaldo Barrera wrote:
>>>> Claro, yo opino lo mismo.
>>>> Leé el archivo como archivo de texto plano, hacele las modificaciones
>>>> que debas en memoria y después parseá ese XML.
>>>> No debe ser mucho laburo convertir a CDATA los campos que correspondan
>>>> haciendolo así (una regex seguro alcanza).
>> http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454
> Soy conciente de ese post, pero no estoy hablando de parsear el XML
> entero, meramente reemplazar una parte en este escenario particular y
> luego parear el XML con la lib que esté usando:
>
> Sería convertir esto:
>
> s = """<Conceptos>
>     <Concepto cantidad="1.00" descripcion="Prueba de concepto
> En dos lineas
> mejor tres" importe="1000.00" noIdentificacion="1272005004"
> unidad="Servicio" valorUnitario="1000.00"/>
> </Conceptos>"""
>
>
> En esto:
>
> s = """<Conceptos>
>     <Concepto cantidad="1.00" importe="1000.00"
> noIdentificacion="1272005004" unidad="Servicio"
> valorUnitario="1000.00"><descripcion>
> <![CDATA["Prueba de concepto
> En dos lineas
> mejor tres]]>/>
> </descripcion>
> </concepto>
> </Conceptos>"""
>
> Se que es un hack un poco horrible, pero admitamoslo; quiere parsear
> partes del XML que son consideradas ignorables (saltos de línea en ese
> formato).
>
> La única otra alternativa es escanear los saltos de línea que estén
> dento de pares de comillas y convertirlos a su escape HTML.
>

Lo que estás tratando de hacer es usar una regexp para encontrar cual es
el texto que esta "adentro" de un tag, y convertirlo a CDATA. Eso debe
tener mil corner cases que te van a doler después.

En este caso, lo que está pasando es que los datos de entrada están
rotos. Tratar de emparchar datos de entrada es algo que sólo debe
intentarse con un broche de la ropa en la nariz. Si la solución de la
regexp funciona, buenísimo, pero es resolver el problema equivocado.

El problema real es "te están dando datos rotos".



More information about the pyar mailing list