只能去读,不能去修改,不能去保存

注意拿到字符串,我们就可以去解析,有另外一种解析方式,自己不用去专门打开文件。一个是直接解析的字符串,一个直接解析的是文件:

from xml.etree import ElementTree as ET

tree=ET.parse("first.xml")

root=tree.getroot()

for node in root.iter('year'):

      new_year=int(node_text)+1//对node_text的值进行获取,然后让它增加了1

      node.text=str(new_year)//最后又将获取的值,最后赋给原来的值

      node.set('name','alex')

      del node.attrib['name']//删除当前节点的name属性

//将文件加载到内存,只是在内存进行修改,源文件没改变,需要重新

这里的修改、删除、添加都是内存,要对源文件进行修改

注意最后加上tree.write("first.xml")

注意对于这些文件来说,通过解析它就是把它放到内存了。但要注意修改完以后只是在内存进行修改的。最后还是要写入文件的。

tree.write("first.xml")

如何获取结点的属性:

node.attrib

//注意如果要删除属性,在删除属性之前,要先对其进行设置属性。

node.set('name','alex'):通过这个可以对当前节点增加属性

可以增加一个属性,就可以增加两个属性:

node.set('age',19)

del node.attrib['name']

from xml.etree import ElementTree as ET

tree=ET.parse("first.xml")

for node in root.iter('year'):

new_year=int(node.text)+1

node.text=str(new_year)

node.set('name','alex')

node.set('age',19)

tree.write("first.xml")

//注意对于第二种方式可以修改

from xml.etree import ElementTree as ET:

tree=ET.parse("xo.xml")

root=tree.getroot()

for country in root.findall('country'):

        rank=int(country.find('rank').text)

        if rank>50:

              root.remove(country)

tree.write('output.xml')

////////////////////////////////////////

tree=ET.parse("first.xml")

root=tree.getroot()

print(dir(root))

注意但凡带iter的都是可以循环的

常用的有:

tag

attrib

find

set

get

 

iter

del

remove

 

posted @ 2017-02-25 20:02  关泉珍  阅读(34)  评论(0)    收藏  举报