[pyar] Salto de linea en XML

Angel Freire cuerty en gmail.com
Mie Dic 12 17:28:37 ART 2012


2012/12/12 Angel Java Lopez <ajlopez2000 en gmail.com>

> Sin trabajar en Python, yo iria por
>
> 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.
>
>
> y lo haria con TDD. Es un camino simple, TDD te servira para tener los
> test listos sobre casos simples, y otros mas complejos que extraigas de
> data actual.
>
> Lo de convertir ese atributa a CDATA... hmmm... me parece demasiado, solo
> lo intentaria si hay todavia mas cosas que te mandan "mal" aparte de los
> saltos de linea. Pero ya tendrias armado con TDD los casos principales, y
> si alguna vez necesitas pasar a eso de CDATA, estara todo servido para un
> buen refactor ;-)
>
> O para cuando surjan problemas con las dobles comillas (algun caso no
> contemplado).
>
> Angel "Java" Lopez
> @ajlopez
> gh:ajlopez
>
> 2012/12/12 Hugo Osvaldo Barrera <hugo en osvaldobarrera.com.ar>
>
>> 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.
>>
>>
>> --
>> Hugo Osvaldo Barrera
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

ElementTree acepta un parametro llamado parser. Por default es una
instancia de XMLParser, pero puede ser cualquier cosa que vos quieras
siempre y cuando respete cierta interface que ElementTree usa para
interactuar con el. Podes heredar ese XMLParser, elimilar la parte donde
remueve el whitespace de los atributos, y usarlo cuando llamas a
fromstring().

-- 
http://blog.cuerty.com

"If you want to set off and go develop some grand new thing, you don't need
millions of dollars of capitalization. You need enough pizza and Diet Coke
to stick in your refrigerator, a cheap PC to work on and the dedication to
go through with it."
- John Carmack
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20121212/e7acdc41/attachment.html>


More information about the pyar mailing list