<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>

XML文件处理,循环遍历取值

import xml.etree.ElementTree as ET
tree = ET.parse('study_xml.xml') #使用parse方法解析这个xml文件
root = tree.getroot() #找到这个解析后的格式化内存地址
# print(root,root.tag) #打印内存地址和标签,tag标签就是大标签
for child in root: #循环取第二层标签内存地址
print(child.tag,child.attrib) #打印标签和属性
for i in child : #再循环第二层标签内存地址
print(i.tag,i.text,i.attrib) #取标签,文本内容和属性(属性就是标签上面 又定义的键值对)

取特定键值对:
for node in root.iter('year'):
print(node.tag,node.text)

修改和删除xml文档内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import xml.etree.ElementTree as ET
 
tree = ET.parse("xmltest.xml")
root = tree.getroot()
 
#修改
for node in root.iter('year'):
    new_year = int(node.text) + 1
    node.text = str(new_year)
    node.set("updated","yes")
 
tree.write("xmltest.xml")
 
 
#删除node
for country in root.findall('country'):
   rank = int(country.find('rank').text)
   if rank > 50:
     root.remove(country)
 
tree.write('output.xml')

删除

自己创建xml文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import xml.etree.ElementTree as ET
 
 
new_xml = ET.Element("namelist")
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text = '33'
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text = '19'
 
et = ET.ElementTree(new_xml) #生成文档对象
et.write("test.xml", encoding="utf-8",xml_declaration=True)
 
ET.dump(new_xml) #打印生成的格式
												

最新文章

  1. 安卓DJ113舞曲网应用客户端 项目源码(服务器+客户端)
  2. 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象
  3. 9 HTML&amp;JS等前端知识系列之Ajax post请求带有token向Django请求
  4. 【CLR Via C#】第5章 基元类型、引用类型、值类型
  5. 9、android开发之java.lang.verifyError(转载)
  6. 第七篇: python高级之多线程
  7. Shuttle ESB 实践
  8. nginx源码学习资源
  9. java 四则混合运算 计算器
  10. LOVO学习之思维导图和文档编辑器
  11. java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念
  12. css清除浮动的3种方式
  13. PAT 1041 考试座位号
  14. 理解Linux文件系统之 inode
  15. Android 关于缓存的一些类
  16. ELK logstash 启动慢的解决方法
  17. Free-form语言
  18. linux命令总结之netstat命令
  19. TP3.2设置URL伪静态满足更好的SEO效果
  20. CodeForces 803A Maximal Binary Matrix

热门文章

  1. 各种多项式操作的 n^2 递推
  2. Codeforces 1175G - Yet Another Partiton Problem(李超线段树)
  3. 洛谷 P5502 - [JSOI2015]最大公约数(区间 gcd 的性质+分治)
  4. Linux—crontab 定期执行程序的命令
  5. KEGG通路图应该怎么看(转载)
  6. 内存管理malloc 2
  7. 设置administrator账号密码
  8. 避免UE4项目VS中误改源码.h文件导致编译时间长
  9. 19. 删除链表的倒数第 N 个结点
  10. addict, address, adequate.四级