2012-02-10 10 views
6

Uso lxml.objectify para analizar fácilmente y trabajar con un archivo XML. Por razones de auditoría, tengo que guardar un objeto derivado junto con el código XML de origen del elemento.Gire el elemento de lxml.objectify de nuevo en XML

root = lxml.objectify.fromstring(self.get_xml_data()) 

for i, elem in enumerate(root.elements): 
    # create new database entry based on elem 
    elem_obj.source_code = turn_elem_into_xml(elem) 

¿Cómo podría aplicar turn_elem_into_xml?

\ edit: ¿por qué el voto a favor?

+0

Te downvoted porque no lo ha hecho, incluso la investigación más rudimentaria. De hecho, pareces desconocer cómo trabajar con objetos lxml ordinarios. – Marcin

+0

De hecho, pasé bastante tiempo buscando la respuesta, como suelo hacer (simplemente verifique mi relación pregunta/respuesta). Perdón por no haber usado los términos correctos de búsqueda de Google esta vez y no estar tan familiarizado con lxml ... –

+0

Hay un sitio web lxml que dirige a los usuarios de forma destacada a su tutorial, que en menos de 10 minutos te habría llevado a la respuesta, y un conocimiento práctico de la biblioteca. Es posible encontrar páginas sin google. – Marcin

Respuesta

6

lxml.etree.tostring

In [21]: r = lxml.objectify.fromstring('<root><item>1</item><item>2</item></root>') 

In [22]: lxml.etree.tostring(r.item) 
Out[22]: '<item>1</item>' 
1

lxml.objectify elementos son todavía elementos normales. Puede imprimirlos como cualquier otro, o convertirlos en cadenas, usando lxml.etree.tostring.

+0

Lo intenté, pero lo único que obtuve fue esto: http://paste.pocoo.org/show/548914/ –

+0

@piquadrat: así no se trata con ** ningún objeto ** lxml. – Marcin

+0

Sí, cuando alguien te dice que uses '.tostring()' no uses 'str()', usa '.tostring()'. – kindall

Cuestiones relacionadas