[pyar] Salto de linea en XML

Hugo Osvaldo Barrera hugo en osvaldobarrera.com.ar
Mie Dic 12 15:35:52 ART 2012


On 2012-12-12 11:09, Mauricio Baeza wrote:
> On 12/12/12 04:45, Pedro Jose Pezzarini wrote:
>> Intentaste, leer los datos de entrada "tal cual estan", y modificarlos
>> en la ejecucion del programa, para hacerlos compatibles?
>>
>>
>> El 11 de diciembre de 2012 19:24, Jamil Enriquez Deceano
>> <jenriquezdeceano en gmail.com <mailto:jenriquezdeceano en gmail.com>> escribió:
>>
>>     Puedes sacar todos los conceptos y sus atributos y re-definir como
>>     te indica Tio Oscar, para que obtengas lo que necesites.
>>
>>
>>     El 11 de diciembre de 2012 14:59, Mauricio Baeza
>>     <mauricio01 en correolibre.org <mailto:mauricio01 en correolibre.org>>
>>     escribió:
>>
>>         On 11/12/12 14:47, Tio Oscar wrote:
>>>         El 11 de diciembre de 2012 20:07, Mauricio Baeza
>>>         <mauricio01 en correolibre.org
>>>         <mailto:mauricio01 en correolibre.org>> escribió:
>>>
>>>             On 11/12/12 14:03, Gonzalo Odiard wrote:
>>>>             Podes usar CDATA?
>>>>
>>>>             Gonzalo
>>>>
>>>>             2012/12/11 Mauricio Baeza <mauricio01 en correolibre.org
>>>>             <mailto:mauricio01 en correolibre.org>>
>>>>
>>>>                 On 11/12/12 13:49, Sebastian Bassi wrote:
>>>>
>>>>                     Sin mirar la spec de XML, se me hace que como
>>>>                     valor de los atributos
>>>>                     los saltos de linea pueden ser ignorados, si no
>>>>                     es que están
>>>>                     prohibidos directamente.
>>>>
>>>>                     2012/12/11 Mauricio Baeza
>>>>                     <mauricio01 en correolibre.org
>>>>                     <mailto:mauricio01 en correolibre.org>>:
>>>>
>>>>                         Hola *.
>>>>
>>>>                         ¿Alguien podría decirme por qué no recupero
>>>>                         los saltos de línea del atributo
>>>>                         descripción del siguiente código?
>>>>
>>>>                         from xml.etree import ElementTree
>>>>
>>>>                         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>"""
>>>>
>>>>                         xml = ElementTree.fromstring(s)
>>>>
>>>>                         for c in xml.getchildren():
>>>>                              print c.attrib['descripcion']
>>>>
>>>>
>>>>
>>>>                         Un requisito indispensable es que sea con
>>>>                         ElementTree...
>>>>
>>>>                         Gracias
>>>>
>>>>
>>>>                         --
>>>>
>>>>
>>>>
>>>>
>>>>                 Gracias...
>>>>
>>>>                 Haciendo otra pruebas, si uso el valor decimal del
>>>>                 salto de línea, si los respeta al parsear, el
>>>>                 problema es que los originales no vienen así...
>>>>
>>>>
>>>>                 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>"""
>>>>
>>>>
>>>>                 Saludos
>>>>
>>>>
>>>
>>>
>>>             Si, vi algo de eso en internet... el problema, es que no
>>>             puedo modificar los originales, así llegan...
>>>
>>>
>>>             Saludos
>>>
>>>             -- 
>>>
>>>
>>>         Realmente no es muy prolijo, yo te recomendaría hacer esto:
>>>
>>>         <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]]></Concepto>
>>>         </Conceptos>
>>>
>>>         -- 
>>>         El Tio ~ Programador, hacker y filósofo
>>>
>>
>>
>>         Gracias...
>>
>>         Tal cual lo pones, me da error al parsear... pero... el punto
>>         es que no puedo modificar el original, son archivos que me
>>         llegan así...
>>
>>
>>         Saludos
>>
> 
> 
> 
> ¿Te refieres a leer en crudo sin usar las librerías para XML?
> 
> 
> -- 
> __________________________________
> Mauricio Baeza Servín
> www.universolibre.org
> Todo lo que no podemos dar nos posee... Andre Gid
> 
> 
> 

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).

-- 
Hugo Osvaldo Barrera



More information about the pyar mailing list