Python实现对象转换为xml的方法示例

Python实现对象转换为xml的方法示例,第1张

概述本文实例讲述了Python实现对象转换为xml的方法。分享给大家供大家参考,具体如下:

本文实例讲述了Python实现对象转换为xml的方法。分享给大家供大家参考,具体如下:

# -*- Coding:UTF-8 -*-'''''Created on 2010-4-20@author: 忧里修斯'''import xml.etree.ElementTree as ETimport xml.dom.minIDom as minIDomfrom addrbook.domain import Personclass Converter(object):  '''''     实现Python对象与xml之间的相互转换  '''  root = None#根节点  def __init__(self):    pass  @staticmethod  def createRoot(roottag):    '''''          创建根节点    '''    root = ET.Element(roottag)    return root  @staticmethod  def getXmlString(element,defaultEnCoding='utf-8'):    '''''          根据节点返回格式化的xml字符串    '''    try:      rough_string = ET.tostring(element,defaultEnCoding)      reparsed = minIDom.parseString(rough_string)      return reparsed.toprettyxml(indent=" ",enCoding=defaultEnCoding)    except:      print 'getXmlString:传入的节点不能正确转换为xml,请检查传入的节点是否正确'      return ''  @staticmethod  def classtoElements(classobj,roottag=None):    '''''          根据传入的对象的实例,根据对象的属性生成节点,返回由节点组成的列表    classobj:对象的实例    roottag:根节点名称    '''    attrs = None#保存对象的属性集    eleList = []#节点列表    try:      attrs = classobj.__dict__.keys()#获取该对象的所有属性(即成员变量)    except:      print 'classtoElements:传入的对象非法,不能正确获取对象的属性'    if attrs != None and len(attrs) > 0:#属性存在      for attr in attrs:        attrvalue = getattr(classobj,attr)#属性值        #属性节点        attrE = ET.Element(attr)        attrE.text = attrvalue        #加入节点列表        eleList.append(attrE)    return eleList  @staticmethod  def classtoXML(classobj,roottag=None):    '''''    Python自定义模型类转换成xml,转换成功返回的是xml根节点,否则返回None    classobj:对象的实例    roottag:根节点名称    '''    try:      classname = classobj.__class__.__name__ #类名      if roottag != None:        root = Converter.createRoot(roottag)      else:        root = Converter.createRoot(classname)      eleList = Converter.classtoElements(classobj,roottag)      for ele in eleList:        root.append(ele)      return root    except:      print 'classtoXML:转换出错,请检查的传入的对象是否正确'      return None  @staticmethod  def collectionToXML(Listobj,roottag='List'):    '''''              集合(列表、元组、字典)转换为xml,转换成功返回的是xml根节点,否则返回None    '''    try:      classname = Listobj.__class__.__name__ #类名      root = Converter.createRoot(roottag)      if isinstance(Listobj,List) or isinstance(Listobj,tuple):#列表或元组        if len(Listobj) >= 0:          for obj in Listobj:#迭代列表中的对象            itemE = Converter.classtoXML(obj)            root.append(itemE)      elif isinstance(Listobj,dict):#字典        if len(Listobj) >= 0:          for key in Listobj:#迭代字典中的对象            obj = Listobj[key]            itemE = Converter.classtoXML(obj)            itemE.set('key',key)            root.append(itemE)      else:        print 'ListToXML:转换错误,传入的对象:'+classname+'不是集合类型'      return root    except:      print 'collectionToXML:转换错误,集合转换成xml失败'      return Noneif __name__ == '__main__':  p1 = Person('dredfsam','男','133665')  p2 = Person('dream','女','r')  p3 = Person('得分','sdf')  personList = {}  personList['p1']= p1  personList['p2']= p2  personList['p3']= p3#  personList.append(p1)#  personList.append(p2)#  personList.append(p3)  root = Converter.collectionToXML(personList)  print Converter.getXmlString(root)#  pList = (p1,p2,p3)#{'name':'sdf'}#  print type(pList)#  print type(pList),isinstance(pList,List)

PS:这里再为大家提供几款关于xml *** 作的在线工具供大家参考使用:

在线XML/JsON互相转换工具:
http://tools.jb51.net/code/xmljson

在线格式化XML/在线压缩XML
http://tools.jb51.net/code/xmlformat

XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python *** 作xml数据技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串 *** 作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录 *** 作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Python实现对象转换为xml的方法示例全部内容,希望文章能够帮你解决Python实现对象转换为xml的方法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1202036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存