Chinaunix

标题: 一个使用ElementTree的xml添加元素,删除,更新,读取的类 [打印本页]

作者: yangward    时间: 2010-03-23 20:59
标题: 一个使用ElementTree的xml添加元素,删除,更新,读取的类
在搜索引擎找到很多python操作xml的文章,但都不完整,我这里这个整理了一个,希望大家给点意见  
problem.xml
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <book>
  3. <date>2010.3.10</date>
  4. <version>Three</version>
  5. <dbcm_version>good</dbcm_version></book>
复制代码
dbcm_xml.py

  1. #!/usr/bin/env python
  2. #coding=UTF-8
  3. #用于某个xml的属性值
  4. import os,sys,xml.etree.ElementTree as ET
  5. class DbcmXml:
  6.         def __init__(self,filePath):
  7.                 self.filePath = filePath
  8.                 print '文件路径 %s' %filePath
  9.                 print ET.parse(filePath)
  10.                 self.xmlFile = os.path.abspath(__file__)
  11.                 self.xmlFile = os.path.dirname(self.xmlFile)
  12.                 self.xmlFile = os.path.join(self.xmlFile,self.filePath)
  13.                 try:
  14.                         self.dom = ET.parse(filePath)
  15.                         self.root = self.dom.getroot()
  16.                 except Exception,inst:
  17.                         print "打开%s 文件时候遇到错误" %self.filePath
  18.         ##输出某个属性的text内容
  19.         def getElementText(self,elementName):
  20.                 self.elementName = elementName
  21.                 if self.root.find(self.elementName) ==None:
  22.                         print ' %s None' %self.elementName
  23.         ## 更新某个已经存在的元素的text内容
  24.         def updateElementText(self,elementName,textValue):
  25.                 for self.item in self.root:
  26.                         self.oldElement = self.root.find(elementName)
  27.                         self.root.remove(self.oldElement)
  28.                         self.newElement = ET.SubElement(self.root,elementName)
  29.                         self.newElement.text = textValue
  30.                 tree = ET.ElementTree(self.root)
  31.                 tree.write("problem.xml","UTF-8")
  32.         ## 添加某个元素进去
  33.         def addElement(self,elementName,textValue):
  34.                 if self.root.find(elementName) ==None:
  35.                         child = ET.SubElement(self.root,elementName)
  36.                         child.text = textValue
  37.                 try:
  38.                         tree = ET.ElementTree(self.root)
  39.                         tree.write("problem.xml",encoding="UTF-8")
  40.                 except        Exception,inst:
  41.                         print "写入文件出错 %s " %inst
  42.         ##删除某个元素
  43.         def delElement(self,elementName,textValue):
  44.                 #print self.root.find(elementName).text
  45.                 for self.item in self.root:
  46.                         self.oldElement == elementName
  47.                         self.oldElement = self.root.find(elementName)
  48.                         if self.oldElement !=None:
  49.                                 self.root.remove(self.oldElement)
  50.                                 tree = ET.ElementTree(self.root)
  51.                                 tree.write("problem.xml","UTF-8")
  52.                         #self.newElement = ET.SubElement(self.root,elementName)
  53.                         #self.newElement.text = textValue
  54.                 tree = ET.ElementTree(self.root)
  55.                 tree.write("problem.xml","UTF-8")

  56. test = DbcmXml('problem.xml')
  57. test.getElementText('dbcm_version')
  58. test.updateElementText('dbcm_version','good')
  59. #test.addElement('google','man')
  60. test.delElement('google','man')
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2