


Detailed explanation of object to XML method explained by Python
This article mainly introduces Python's method of converting objects into xml. It analyzes Python object attributes, node operations and related implementation techniques for converting to xml in the form of examples. Friends in need can refer to the following
The example in this article describes the method of converting objects into xml in Python. Share it with everyone for your reference, the details are as follows:
# -*- 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)
The above is the detailed content of Detailed explanation of object to XML method explained by Python. For more information, please follow other related articles on the PHP Chinese website!

Create multi-dimensional arrays with NumPy can be achieved through the following steps: 1) Use the numpy.array() function to create an array, such as np.array([[1,2,3],[4,5,6]]) to create a 2D array; 2) Use np.zeros(), np.ones(), np.random.random() and other functions to create an array filled with specific values; 3) Understand the shape and size properties of the array to ensure that the length of the sub-array is consistent and avoid errors; 4) Use the np.reshape() function to change the shape of the array; 5) Pay attention to memory usage to ensure that the code is clear and efficient.

BroadcastinginNumPyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.Itsimplifiescode,enhancesreadability,andboostsperformance.Here'showitworks:1)Smallerarraysarepaddedwithonestomatchdimensions.2)Compatibledimensionsare

ForPythondatastorage,chooselistsforflexibilitywithmixeddatatypes,array.arrayformemory-efficienthomogeneousnumericaldata,andNumPyarraysforadvancednumericalcomputing.Listsareversatilebutlessefficientforlargenumericaldatasets;array.arrayoffersamiddlegro

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

ToaccesselementsinaPythonarray,useindexing:my_array[2]accessesthethirdelement,returning3.Pythonuseszero-basedindexing.1)Usepositiveandnegativeindexing:my_list[0]forthefirstelement,my_list[-1]forthelast.2)Useslicingforarange:my_list[1:5]extractselemen

Article discusses impossibility of tuple comprehension in Python due to syntax ambiguity. Alternatives like using tuple() with generator expressions are suggested for creating tuples efficiently.(159 characters)

The article explains modules and packages in Python, their differences, and usage. Modules are single files, while packages are directories with an __init__.py file, organizing related modules hierarchically.

Article discusses docstrings in Python, their usage, and benefits. Main issue: importance of docstrings for code documentation and accessibility.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.
