Python中xmltodict模块对XML的用法详解
作者:生有涯,知无涯
这篇文章主要介绍了Python中xmltodict模块对XML的用法详解,xmltodict 是一个用来处理xml数据的很方便的模块,包含两个常用方法parse和unparse,本文通过代码介绍了用法,需要的朋友可以参考下
1. parse
- xmltodict.parse()方法可以将xml数据转为python中的dict字典数据:
>>> import xmltodict >>> xml_str = """ ... <xml> ... <ToUserName><![CDATA[gh_866835093fea]]></ToUserName> ... <FromUserName><![CDATA[ogdotwSc_MmEEsJs9-ABZ1QL_4r4]]></FromUserName> ... <CreateTime>1478317060</CreateTime> ... <MsgType><![CDATA[text]]></MsgType> ... <Content><![CDATA[你好]]></Content> ... <MsgId>6349323426230210995</MsgId> ... </xml> ... """ >>> >>> xml_dict = xmltodict.parse(xml_str) >>> type(xml_dict) <class 'collections.OrderedDict'> # 类字典型,可以按照字典方法操作 >>> >>> xml_dict OrderedDict([(u'xml', OrderedDict([(u'ToUserName', u'gh_866835093fea'), (u'FromUserName', u'ogdotwSc_MmEEsJs9-ABZ1QL_4r4'), (u'CreateTime', u'1478317060'), (u'MsgType', u'text'), (u'Content', u'\u4f60\u597d'), (u'MsgId', u'6349323426230210995')]))]) >>> >>> xml_dict['xml'] OrderedDict([(u'ToUserName', u'gh_866835093fea'), (u'FromUserName', u'ogdotwSc_MmEEsJs9-ABZ1QL_4r4'), (u'CreateTime', u'1478317060'), (u'MsgType', u'text'), (u'Content', u'\u4f60\u597d'), (u'MsgId', u'6349323426230210995')]) >>> >>> for key, val in xml_dict['xml'].items(): ... print key, "=", val ... ToUserName = gh_866835093fea FromUserName = ogdotwSc_MmEEsJs9-ABZ1QL_4r4 CreateTime = 1478317060 MsgType = text Content = 你好 MsgId = 6349323426230210995 >>>
2. unparse
- xmltodict.unparse()方法可以将字典转换为xml字符串:
xml_dict = { "xml": { "ToUserName" : "gh_866835093fea", "FromUserName" : "ogdotwSc_MmEEsJs9-ABZ1QL_4r4", "CreateTime" : "1478317060", "MsgType" : "text", "Content" : u"你好", "MsgId" : "6349323426230210995", } } >>> xml_str = xmltodict.unparse(xml_dict) >>> print xml_str <?xml version="1.0" encoding="utf-8"?> <xml><FromUserName>ogdotwSc_MmEEsJs9-ABZ1QL_4r4</FromUserName><MsgId>6349323426230210995</MsgId><ToUserName>gh_866835093fea</ToUserName><Content>你好</Content><MsgType>text</MsgType><CreateTime>1478317060</CreateTime></xml> >>> >>> xml_str = xmltodict.unparse(xml_dict, pretty=True) # pretty表示友好输出 >>> print xml_str <?xml version="1.0" encoding="utf-8"?> <xml> <FromUserName>ogdotwSc_MmEEsJs9-ABZ1QL_4r4</FromUserName> <MsgId>6349323426230210995</MsgId> <ToUserName>gh_866835093fea</ToUserName> <Content>你好</Content> <MsgType>text</MsgType> <CreateTime>1478317060</CreateTime> </xml> >>>
下面是一个简单的示例XML文件:
<?xml version="1.0"?> <mydocument has="an attribute"> <and> <many>elements</many> <many>more elements</many> </and> <plus a="complex"> element as well </plus> </mydocument>
这是第三方包,在处理前先用pip来安装
pip install xmltodict
可以像下面这样访问里面的元素,属性及值:
import xmltodict with open("test.xml") as fd: # 将XML文件装载到dict里面 doc = xmltodict.parse(fd.read()) print(doc["mydocument"]["@has"]) # an attribute print(doc["mydocument"]["and"]) # OrderedDict([(u'many', [u'elements', u'more elements'])]) print(doc["mydocument"]["and"]["many"]) # [u'elements', u'more elements'] print(doc["mydocument"]["plus"]["@a"]) # complex print(doc["mydocument"]["plus"]["#text"]) # element as well
xmltodict 也有unparse函数让您可以转回XML。
该函数有一个streaming模式适合用来 处理不能放入内存的文件,它还支持命名空间
到此这篇关于Python中xmltodict模块对XML的用法详解的文章就介绍到这了,更多相关xmltodict 模块处理xml内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!