免费注册 查看新帖 |

Chinaunix

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

转,最近用到 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 19:13 |只看该作者 |倒序浏览

python之操作xml文件
小鱼儿 发表于 2007-10-18 14:29:00
4
推荐
假设有一下xml文件:
Sample.xml
1

from elementtree.ElementTree as ET
如果你使用的是python2.5的话:
import xml.etree.ElementTree as ET


  • tree = ET.parse("path/to/Sample.xml")
    doc = tree.getroot()         #获得根
    元素的标签名字 : print doc.tag  
    [email=#@result]#@result[/email]
    : configuration
    Element text: print doc.text   
    [email=#@result]#@result[/email]
    : "\n"  如果所有元素是一行的话,结果为空
  • 子元素

    • 迭代子元素: for child in doc
      for child in doc:
          print child.tag        
      [email=#@result]#@result[/email]
      : policy-list 自由policy-list一个子元素
    • 获得第1、2个子元素: doc[0:2]
      获得节点的子元素:elem.getchildren() 返回这个节点的子元素(list)
    • 获得名为policy-list的元素: doc.find('policy-list')
      这里需要注意,由于doc是root的元素,这里不能用doc.find("policy"),来找到policy这个节点,尽管代码不会报错,但是获得是"NoneType" object,如果你调用这个对象的方法,便会报错,比如 policy = doc.find("policy")   policy.find("group"),第一句不会报错,但是第二句就会报错,因为policy是一个NoneType object
    • append(), remove(), insert()方法
      g2 = ET.Element("group")
      g2.text = "3"
      p2 = ET.Element("policy")
      p2.set("id","122334")
      p2.append(g2)  #policy下面增加一个group节点
      policylist = doc.find("policy-list")
      policylist.append(p2) #policy-list下面增加一个policy节点
      tree.write("path/to/Sample.xml") #写入文件
      insert(index,elem) #在制定的index插入一个元素
      del elem[n] #删除第n个节点
      elem.remove(elem2) #从节点elem中删除elem2子节点
    • getiterator(tag) 返回一个列表,或者另外一个迭代对象

  • 节点的属性操作

    • 获得节点的属性key列表: policy.keys()
      [email=#@result]#@result[/email]
      : ["id"]
    • 获得节点的属性数组: policy.items()   
      [email=#@result]#@result[/email]
      : ["id","123456"]
    • 测试节点是否包含某个属性(NAME):
      if policy.get('NAME') is not None, or
      if 'NAME' in book.attrib
    • 获得属性 id的值:
      policy.attrib.get('id'), or
      policy.get('id')
    • 给属性赋值: policy.set('Name', 'httppolicy')

  • 保存修改后的文件 tree.write("path/to/Sample.xml")
    另外几种保存方法,上面这种保存的文件是ascii格式的,如果要保存为utf-8的,可以用这种方式,
    f = open("path/to/Sample.xml","w")
    tree.write(f,"utf-8")
  • 创建节点
    elem.makeelement(tag,attr_dict)
    example: feed = root.makeelement('feed',{'version':'0.22'})
    ET.Element(tag,attr_dict,**extra)
    policy = ET.Element("policy",{"id":"12121"})
    ET.SubElement(parent,tag,attr_dict,**extra)
    group = ET.SubElement(policy,"group")


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/105310/showart_2135846.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP