将python对象转换为xml并再次转换。
xml_marshaller的Python项目详细描述
简介
此模块允许将简单的python数据类型封送到 自定义XML格式。marshaller和unmarshaller类可以是 子类,以便将封送处理实现为不同的XML DTD。 最初的作者是xml-sig(xml-sig@python.org)。
完全兼容pyxml实现,支持命名空间 用于XML输入/输出。
用lxml实现
安装
python setup.py安装
测试
python setup.py测试
用法
对于简单的串行化和非串行化:
>>> from xml_marshaller import xml_marshaller >>> xml_marshaller.dumps(['item1', {'key1': 1, 'key2': 'string'}]) '<marshal><list id="i2"><string>item1</string><dictionary id="i3"><string>key1</string><int>1</int><string>key2</string><string>string</string></dictionary></list></marshal>' >>> xml_marshaller.loads(xml_marshaller.dumps(['item1', {'key1': 1, 'key2': 'string'}])) ['item1', {'key2': 'string', 'key1': 1}]
可以使用类似文件的对象:
>>> from xml_marshaller import xml_marshaller >>> from StringIO import StringIO >>> file_like_object = StringIO() >>> xml_marshaller.dump('Hello World !', file_like_object) >>> file_like_object.seek(0) >>> file_like_object.read() '<marshal><string>Hello World !</string></marshal>' >>> file_like_object.seek(0) >>> xml_marshaller.load(file_like_object) 'Hello World !'
xml_marshaller还可以输出带有限定名的xml:
>>> from xml_marshaller import xml_marshaller >>> xml_marshaller.dumps_ns('Hello World !') '<marshal:marshal xmlns:marshal="http://www.erp5.org/namespaces/marshaller"><marshal:string>Hello World !</marshal:string></marshal:marshal>'
您也可以使用自己的uri:
>>> from xml_marshaller.xml_marshaller import Marshaller >>> marshaller = Marshaller(namespace_uri='http://my-custom-namespace-uri/namespace') >>> marshaller.dumps('Hello World !') '<marshal:marshal xmlns:marshal="http://my-custom-namespace-uri/namespace"><marshal:string>Hello World !</marshal:string></marshal:marshal>'
历史记录
1.0.2(2019-02-25)
- Python2修复。
1.0.1(2018-11-12)
- 修复更改日志。
1.0(2018-11-12)
- 停止区分Unicode和字节,并始终返回“str”
0.10(2018-09-12)
- 添加对Python3的支持
0.9.7(2010-10-30)
- 增强鸡蛋折叠结构 [尼古拉斯·德拉比]
- 改进测试 [尼古拉斯·德拉比]
- 添加XSD架构 [尼古拉斯·德拉比]
0.9.6(2010-10-12)
- [fix]支持布尔转换 [尼古拉斯·德拉比]
0.9.5(2010-09-01)
- [修正]文件格式 [卢卡斯诺瓦克]
0.9.4(2010-09-01)
- [修复]实例现在已正确地解组。 [塞德里克·德·圣马丁]