Python 구현 대상 을 xml 로 변환 하 는 방법 예시

5284 단어 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)

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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기