2012-02-10 10 views
6

Io uso lxml.objectify per analizzare facilmente e lavorare con un file XML. Per motivi di controllo, devo salvare un oggetto derivato insieme al codice XML di origine dell'elemento.Trasforma l'elemento di lxml.objectify in 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) 

Come potrei implementare turn_elem_into_xml?

\ edit: perché il downvote?

+0

ti ho downvoted perché non hai fatto nemmeno le ricerche più rudimentale. In effetti, sembra che tu non sappia come lavorare con oggetti lxml ordinari. – Marcin

+0

Ho trascorso davvero un po 'di tempo a cercare la risposta, come faccio di solito (basta controllare il mio rapporto domanda/risposta). Ci scusiamo per non aver usato i giusti termini di ricerca di google questa volta e non essendo così familiare con lxml ... –

+0

C'è un sito Web lxml che indirizza in maniera prominente gli utenti al suo tutorial, che in meno di 10 minuti ti avrebbe portato alla risposta, e una conoscenza operativa della biblioteca. È possibile trovare pagine senza google. – Marcin

risposta

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 elementi sono ancora elementi normali. Puoi stamparli come un altro o trasformarli in stringhe usando lxml.etree.tostring.

+0

L'ho provato, ma tutto ciò che ho ottenuto è stato questo: http://paste.pocoo.org/show/548914/ –

+0

@piquadrat: Non è così che gestisci ** qualsiasi ** oggetto lxml. – Marcin

+0

Sì, quando qualcuno ti dice di usare '.tostring()' non usare 'str()', usa '.tostring()'. – kindall