[pyar] Salto de linea en XML

Tio Oscar tioscar en gmail.com
Mie Dic 12 21:39:55 ART 2012


El 12 de diciembre de 2012 17:28, Angel Freire <cuerty en gmail.com> escribió:

> 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
>
> _______________________________________________
> 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
>

Yo había hecho una expreg para limpiar un XML que me daba errores.

http://pregcopy.com/exp/8

Está hecha para PHP pero se puede adaptar facilemente. Lo único que hace es
meterle CDATA's.

-- 
El Tio ~ Programador, hacker y filósofo
web: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogentilezza
Twitter: @exos, Indeti.ca: @exos
Tels: [+54 11] 638-LINUX (54689) - [+54 9 11] 6133-2442

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d-- s:++ a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w--- !O
!M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--? b- DI D-- G e@ h>++
r+++(-) y+++>+++++
------END GEEK CODE BLOCK------
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20121212/33d960da/attachment.html>


More information about the pyar mailing list