2010-07-26 149 views
3

我正在尋找將Python對象轉換爲XML數據。我試過lxml,但最終不得不編寫自定義代碼來將我的對象保存爲不完美的xml。如何將Python對象轉換爲XML?

我正在尋找更像pyxser的東西。不幸的是pyxser xml代碼看起來不同於我所需要的。

比如我有我自己的類人

Class Person: 
    name = "" 
    age = 0 
    ids = [] 

,我想,轉變爲XML代碼看起來像

<Person> 
    <name>Mike</name> 
    <age> 25 </age> 
    <ids> 
     <id>1234</id> 
     <id>333333</id> 
     <id>999494</id> 
    </ids> 
</Person> 

我沒有找到lxml.objectify是採用任何方法對象並返回xml代碼。

+1

[序列化python對象到XML]可能的重複(http://stackoverflow.com/questions/2101902/serializing-python-objects-to-xml) – 2010-07-26 11:48:19

+0

相關:[我如何將XML轉換爲Python對象? ](https://stackoverflow.com/q/418497/3357935) – 2018-02-13 20:54:18

回答

2

最好是相當主觀,我不確定有可能在不瞭解您的要求的情況下說出最好的。不過Gnosis已經推薦previously將Python對象序列化爲XML,因此您可能需要從此開始。

從靈知主頁:

靈知utils包含用於XML處理幾個Python模塊,再加上其他通常有用的工具:

  • xml.pickle(對象序列化到/從XML)
  • API與標準泡菜模塊兼容)
  • xml.objectify(將任意XML文檔轉換爲Python對象)
  • xml.validity(強制通過DTD或XML Schema的有效性約束)
  • xml.indexer(全文索引/搜索)
  • 更多...

另一種選擇是lxml.objectify

+1

你可以添加一個被序列化的類的例子嗎? – 2018-02-13 15:09:04

-3

麥克,

你可以實現物體渲染成XML:

class Person: 
    ... 
    def toXml(self): 
    print '<Person>' 
    print '\t<name>...</name> 
    ... 
    print '</Person>' 

,或者您可以使用XSLT轉換靈知或pyxser輸出。

+1

相當於XML的打印文本與XML序列化不同。 – 2018-02-13 15:05:39