免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4965 | 回复: 0
打印 上一主题 下一主题

一个使用ElementTree的xml添加元素,删除,更新,读取的类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-23 20:59 |只看该作者 |倒序浏览
在搜索引擎找到很多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')
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP