xml数据结构处理
2024-10-19 18:31:02
<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) #打印生成的格式 |
最新文章
- 安卓DJ113舞曲网应用客户端 项目源码(服务器+客户端)
- 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象
- 9 HTML&;JS等前端知识系列之Ajax post请求带有token向Django请求
- 【CLR Via C#】第5章 基元类型、引用类型、值类型
- 9、android开发之java.lang.verifyError(转载)
- 第七篇: python高级之多线程
- Shuttle ESB 实践
- nginx源码学习资源
- java 四则混合运算 计算器
- LOVO学习之思维导图和文档编辑器
- java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念
- css清除浮动的3种方式
- PAT 1041 考试座位号
- 理解Linux文件系统之 inode
- Android 关于缓存的一些类
- ELK logstash 启动慢的解决方法
- Free-form语言
- linux命令总结之netstat命令
- TP3.2设置URL伪静态满足更好的SEO效果
- CodeForces 803A Maximal Binary Matrix
热门文章
- 各种多项式操作的 n^2 递推
- Codeforces 1175G - Yet Another Partiton Problem(李超线段树)
- 洛谷 P5502 - [JSOI2015]最大公约数(区间 gcd 的性质+分治)
- Linux—crontab 定期执行程序的命令
- KEGG通路图应该怎么看(转载)
- 内存管理malloc 2
- 设置administrator账号密码
- 避免UE4项目VS中误改源码.h文件导致编译时间长
- 19. 删除链表的倒数第 N 个结点
- addict, address, adequate.四级