只能去读,不能去修改,不能去保存
注意拿到字符串,我们就可以去解析,有另外一种解析方式,自己不用去专门打开文件。一个是直接解析的字符串,一个直接解析的是文件:
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

浙公网安备 33010602011771号