Python xml.etree.ElementTree 用法

import xml.etree.ElementTree as et

parser = et.parse("data.xml");
root = parser.getroot();
addr = et.Element("addr");
addr.text="Beijing";
cellular=et.Element("cellular");
cellular.text="187313211001";

list_Element=[addr,cellular];

for item in range(len(root)):
    root[item].extend(list_Element);

parser.write("data.xml",encoding="utf-8");

操作数据的源文件XML

<students>
    <student no="2009081097">
        <name nickname="apple">jack</name>
        <gender>M</gender>
        <age updated="yes">89</age>
        <score subject="math">97</score>
        <score subject="chinese">90</score>
    </student>
    <student no="2009081098">
        <name nickname="apple">sunny</name>
        <gender>W</gender>
        <age updated="yes">90</age>
        <score subject="math">87</score>
        <score subject="chinese">96</score>
    </student>
    <student no="2009081099">
        <name nickname="apple">Anna</name>
        <gender>M</gender>
        <age updated="yes">88</age>
        <score subject="math">64</score>
        <score subject="chinese">98</score>
    </student>
</students>

__author__ = 'sandy'
#_*_coding:utf-8_*_

import xml.etree.cElementTree as et
import xml.etree.ElementTree as ets





#解析文件
parser = et.parse("data.xml");

#获取根节点
root = parser.getroot();
#获取标签名字
print root.tag
#获取属性
attr = root.attrib;
#通过索引访问节点
print root[0][0].text;

#查找根目录下面的子元素
for name in root.findall("student"):
    #查找一个具体的元素
    print name.find("age").get("updated");
    #获取属性
    print name.get("no");


#获取student元素
#更改student.age年龄
#获取name设置属性
#写入文档
for child in root.iter("student"):
    new_age = int(child.find("age").text)+10;
    child.find("age").text = str(new_age);
    child.find("name").set("nickname","apple");
parser.write("data.xml");

#查找根目录下面的子元素
#查找age
#如果大于age删除元素
#写入文档
for offspring in root.findall("student"):
    age = int(offspring.find("age").text);
    if(age > 60):
        root.remove(offspring);

parser.write("data.xml");


#创建元素
father = et.Element("father");
father.text = "Jason";
son = et.SubElement(father,"son");
son.text = "Lan";
daughter=et.SubElement(father,"daughter");
daughter.text="sunny";

print et.dump(father);


exit();
#迭代属性
for child in root:
    print ("iterator node name is {} , attr is {}").format(child.tag,child.attrib);





for student in root.findall('student'):
    id = student.get("no");
    name = student.find("name").text;
    print (id,name)


for age in root.iter('age'):
    new_age = int(age.text)+1
    age.text = str(new_age);
    age.set('updated','yes')
parser.write("data.xml");



for name in root.iter("student"):

    #print name.tag;
    print name.attrib["no"];

#_*_coding:utf-8_*_
import xml.etree.ElementTree as et




father = et.Element("father");
father.text = "Jason";
son = et.SubElement(father,"son");
son.text = "Lan";
daughter=et.SubElement(father,"daughter");
daughter.text="sunny";
#print et.dump(father);


#类似获取根节点
root = et.ElementTree(father);
#写入文件 用什么编码 是否要申明头部文件
root.write("student.xml",encoding="utf-8",xml_declaration=True);


#添加子节点
hobby = et.Element("hobby");
hobby.text="C++"
address = et.Element("Address");
address.text="NewYork";

list_Element = [hobby,address];
#扩展子节点
root[0].extend(list_Element);
#写入文档数据
parser.write("data.xml");


#迭代内部文本数据
#for item in root.itertext():
#    print item;

for item in root.iter("student"):
    #获取所有的ID值
    print item.keys();
    #获取所有的Key/name
    print item.items();
parser = et.parse("data.xml");

root = parser.getroot();

#clear all subElement
root.clear();

parser.write("data.xml");



import xml.etree.ElementTree as et

parser = et.parse("data.xml");
root = parser.getroot();
addr = et.Element("addr");
addr.text="Beijing";
cellular=et.Element("cellular");
cellular.text="187313211001";

list_Element=[addr,cellular];

for item in range(len(root)):
    root[item].extend(list_Element);

parser.write("data.xml",encoding="utf-8");


#_*_ coding:utf-8 _*_

import xml.etree.ElementTree as et

parser = et.parse("data.xml");

root = parser.getroot();

#查找元素并且迭代出来 只能迭代A-下面的儿子的元素 这个函数 Python2.7才有
for item in root.iterfind("name"):
    print item;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值