2012-02-10 53 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