2012-02-10 55 views
6

我使用lxml.objectify来轻松解析和处理XML文件。出于审计原因,我必须将派生对象与元素的原始XML代码一起保存。将lxml.objectify的元素转换回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) 

我该如何实施turn_elem_into_xml

\编辑:为什么downvote?

+0

我downvoted你,因为你没有这样做,即使是最起码的研究。事实上,你似乎没有意识到如何使用普通的lxml对象。 – Marcin 2012-02-10 17:23:26

+0

我确实花了相当多的时间寻找答案,就像我通常那样(只是检查我的问题/答案比率)。对不起,这次没有使用正确的谷歌搜索条件,而不是熟悉lxml ... – 2012-02-10 17:31:45

+0

有一个lxml网站,突出地指导用户到它的教程,在不到10分钟的时间内会导致你的答案,并图书馆的工作知识。有可能找到没有谷歌的网页。 – Marcin 2012-02-10 17:33:58

回答

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元素仍然是正常的元素。您可以像打印其他任何东西一样打印它们,或使用lxml.etree.tostring将它们打成字符串。

+0

我试过了,但我得到的只是这个:http://paste.pocoo.org/show/548914/ – 2012-02-10 17:06:28

+0

@piquadrat:这不是你处理**任何** lxml对象的方式。 – Marcin 2012-02-10 17:21:30

+0

是的,当有人告诉你使用'.tostring()'不要使用'str()'时,使用'.tostring()'。 – kindall 2012-02-10 19:07:27