- 论坛徽章:
- 0
|
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 |
|