这篇文章主要介绍了Python实现对象转换为xml的方法,结合实例形式分析了Python对象属性、节点的操作及与xml相互转换的相关实现技巧,需要的朋友可以参考下
本文实例讲述了Python实现对象转换为xml的方法。分享给大家供大家参考,具体如下:
# -*- coding:UTF-8 -*- ''''' Created on 2010-4-20 @author: 忧里修斯 ''' import xml.etree.ElementTree as ET import xml.dom.minidom as minidom from addrbook.domain import Person class 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 None if __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)
以上是Python讲解之对象转XML方法详解的详细内容。更多信息请关注PHP中文网其他相关文章!

pythristssupportnumereperations:1)addingElementSwithAppend(),Extend(),andInsert()。2)emovingItemSusingRemove(),pop(),andclear(),and clear()。3)访问andmodifyingandmodifyingwithIndexingAndexingAndSlicing.4)

使用NumPy创建多维数组可以通过以下步骤实现:1)使用numpy.array()函数创建数组,例如np.array([[1,2,3],[4,5,6]])创建2D数组;2)使用np.zeros(),np.ones(),np.random.random()等函数创建特定值填充的数组;3)理解数组的shape和size属性,确保子数组长度一致,避免错误;4)使用np.reshape()函数改变数组形状;5)注意内存使用,确保代码清晰高效。

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增强可读性,和Boostsperformance.Shere'shore'showitworks:1)较小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1)Listscanholdelementsofdifferenttypes,2)theyaredynamic,allowingeasyadditionsandremovals,3)theyofferintuitiveoperationslikeslicing,but4)theyarelessmemory-efficientandslowerforlargedatasets.

toAccesselementsInapyThonArray,useIndIndexing:my_array [2] accessEsthethEthErlement,returning.3.pythonosezero opitedEndexing.1)usepositiveandnegativeIndexing:my_list [0] fortefirstElment,fortefirstelement,my_list,my_list [-1] fornelast.2] forselast.2)

文章讨论了由于语法歧义而导致的Python中元组理解的不可能。建议使用tuple()与发电机表达式使用tuple()有效地创建元组。(159个字符)

本文解释了Python中的模块和包装,它们的差异和用法。模块是单个文件,而软件包是带有__init__.py文件的目录,在层次上组织相关模块。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),