2010-07-26 208 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