python xml

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

xml的格式如下,就是通过<>节点来区别数据结构的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<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协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import xml.etree.ElementTree as ET
  
tree = ET.parse("xmltest.xml")
root = tree.getroot()
print(root.tag)
  
#遍历xml文档
for child in root:
    print(child.tag, child.attrib)
    for i in child:
        print(i.tag,i.text)
  
#只遍历year 节点
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) #打印生成的格式  

转载于:https://www.cnblogs.com/weiyiming007/p/8540656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

碰疼了会躲!这个植入“迷你大脑”的AI机器人,可感知疼痛,还能自我愈合...

来源&#xff1a;雷锋网人类为什么会产生痛觉&#xff1f;没错&#xff0c;是因为大脑中枢神经。和触觉、温度等感觉一样&#xff0c;我们对疼痛非常敏感&#xff0c;当受到外界“轻微”刺激时&#xff0c;体内的神经元产生相应的信号&#xff0c;并传输至大脑中的中枢神经系统…

哈佛大学惊人发现:新冠对人类未来影响巨大!

来源&#xff1a;北美观察家近日&#xff0c;哈佛大学公共卫生学院发了一篇Science&#xff1a;根据论文中的描述&#xff0c;无论是否能研发出疫苗&#xff0c;新冠病毒都可能会陪伴人类到2025年。那么&#xff0c;2025年以后人类能摆脱新冠病毒吗&#xff1f;不&#xff0c;只…

服务的分类与启动

一、服务的分类 查询已安装的服务 RPM包安装的服务 [rootbogon ~]# chkconfig --list# 查看服务自启动状态&#xff0c;可以看到所有RPM包安装的服务 # 此命令不可以查看源码包安装的服务 注&#xff1a;1、2、3、4、5、6是运行级别 源码包安装的服务 查看服务安装位置&#xf…

在Linux里awk与sed的区别,linux awk和sed讲解

sed 工具简介在了解了一些正规表示法的基础应用之后&#xff0c;再来呢&#xff1f;呵呵&#xff5e;两个东西可以玩一玩的&#xff0c;那就是 sed 跟 awk 了&#xff01;这两个家伙可是相当的有用的啊&#xff01;举例来说&#xff0c;鸟哥写的 logfile.sh 分析登录文件的小程…

python编辑器_推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者

编程里面的编辑器就像是武林大会里面的高手&#xff0c;每一年都有新秀&#xff0c;黑马出现&#xff01;比如有练习霸道的天罡之气的榜首Pycharm&#xff0c;力量雄厚霸道战斗力极强&#xff0c;但是对斗气消耗很大&#xff0c;占内存大而且启动速度有点慢&#xff01;还有练习…

因果解释能够对规则进行解释吗?

来源&#xff1a;《哲学动态》2017年第10期作者&#xff1a;初维峰&#xff08;西安交通大学人文社会科学学院&#xff09;本文受中国博士后科学基金面上资助项目“当代西方因果解释理论研究”(2017M613160)资助。在现实生活中&#xff0c;我们不仅要对某一事件进行解释&#x…

抓取一台电脑linux,教程方法;用来获取Linux主机信息的5个常用命令电脑技巧-琪琪词资源网...

琪琪词资源网-教程方法;用来获取Linux主机信息的5个常用命令电脑技巧&#xff0c;以下是给大家带来的教程方法;用来获取Linux主机信息的5个常用命令&#xff0c;大家可以了解一下哦!有些时候Linux 系统管理员在接手一台新的服务器时&#xff0c;如果没有好的交接文档&#xff0…

软件工程网络15个人阅读作业1(201521123029 郑佳明)

软件工程网络15个人阅读作业1 Task1&#xff1a;博客园地址 茗想 Task2&#xff1a;码云地址 ming Task3&#xff1a;完成博客-阅读与思考 阅读参考材料&#xff0c;并回答下面几个问题&#xff1a; &#xff08;1&#xff09;回想一下你初入大学时对网络工程专业的畅想 当初你…

okhttp post json 数据_使用python抓取App数据

App中的数据可以用网络爬虫抓取么答案是完全肯定的&#xff1a;凡是可以看到的APP数据都可以抓取。下面我就介绍下自己的学习经验和一些方法吧 本篇适合有过web爬虫基础的程序猿看没有的的话学的可能会吃力一些App接口爬取数据过程使用抓包工具手机使用代理&#xff0c;app所有…

JS的typeof力所能及已经力所不及

typeof返回值列表 typeof的作用 返回参数的类型 typeof能判断的类型 String类型: typeof a stringUndefined类型: typeof undefined undefinedBoolean类型: typeof true booleanNumber类型: typeof 22 numberSymbol类型: typeof Symbol() symbolFunction类型:typeof funct…

忆阻器类脑芯片与人工智能

来源&#xff1a;文章转载自期刊《微纳电子与智能制造》作者&#xff1a;陈子龙&#xff0c;程传同&#xff0c;董毅博&#xff0c;张 欢&#xff0c;张恒杰&#xff0c;毛旭瑞&#xff0c;黄北举&#xff0c;谢谢。摘 要现阶段计算与存储分离的“冯诺依曼”体系在功耗和速率方…

linux系统下替换图片,Linux(ubuntu系统)下使用FreeImage库

Linux(ubuntu系统)下使用FreeImage库Linux(ubuntu系统)下使用FreeImage库最近在搞一个图像处理的项目&#xff0c;需要用到FreeImage&#xff0c;之前在Windows下用过&#xff0c;很简单&#xff0c;因为FreeImage官网提供了可供使用的静态库动态库&#xff0c;直接包含就行了。…

t分布f分布与样本均值抽样分布_分布模拟1——MCMC抽样方法

分布是一系列数字的规律组合。如果在收集了历史中的几百个数据后&#xff0c;我想知道这群数据背后的发射机制是什么&#xff0c;那么就得去寻找这个分布。当然这里的重点不是寻找分布&#xff0c;而是在已知分布的情况下&#xff0c;如何模拟这个机制发射出来的一系列数字呢&a…

UWP Composition API - PullToRefresh

UWP Composition API - PullToRefresh 原文:UWP Composition API - PullToRefresh背景&#xff1a; 之前用ScrollViewer 来做过 PullToRefresh的控件&#xff0c;在项目一些特殊的条件下总有一些问题&#xff0c;比如ScrollViewer不会及时到达指定位置。于是便有了使用Composit…

linux 普通io实现pwm,用普通IO口做PWM输出 - 51单片机 - 电子工程世界-论坛 - 手机版...

本人现在想用IO口做PWM输出&#xff0c;频率1KHz&#xff0c;然后用两按键(、-)来调节占空比0-100%&#xff0c;对应数码管显示000-100。现波形是OK了&#xff0c;也可以调占空比&#xff0c;但是出现一个问题数码管显示乱七八糟&#xff0c;调了两天都没有调好&#xff0c;还请…

从城市治理到城市“智”理,AI 不仅是城市管理的“眼睛”

来源&#xff1a;帮尼资讯部分参考来源&#xff1a;中国安防行业网&#xff0c;图片来源网络近年来&#xff0c;随着计算机视觉技术的长足进步&#xff0c;AI在城市管理领域广泛部署。其中&#xff0c;AI视频分析识别技术成为城市场景中规模最大、数量最多、落地最广泛的应用。…

python3 应用 nose_parameterized 实现unittest 参数化

一、读取变量的值&#xff0c;实现unittest 参数化 import nose_parameterized,unittestdef calc(a:int,b:int):return ab case_data [[10,20,30],[12,21,33],[15,21,36] ] class MyClass(unittest.TestCase):nose_parameterized.parameterized.expand(case_data)def test_comp…

vue data数据修改_VUE的数据响应式

什么是数据响应式&#xff1f;const vm newVUE({data:{n:0}})上面的代码中&#xff0c;如果修改vm.n&#xff0c;那么UI中的n就会通过变化来响应我&#xff0c;这就是数据响应式。VUE对data做了什么&#xff1f;当给一个vue实例传入data的时候&#xff0c;vue内部会对传入的dat…

linux使用vim开启文档,linux 配置 直接用VIM默认打开文件

方法一&#xff1a;主要 是把gedit 默认打开的文件 都改成 vim了 此方法有缺陷。推荐使用 方法二 可以指定 哪种类型文件 用VIM 默认打开。两种方法都实现了 方便打开文件 摆脱了用VIM编码 打开文件还要 输入 烦长的路径,配置如下:方法一&#xff1a;把所有 默认 用 gedit 打开…

C#多线程技术总结(异步)

我这里针对现有的C#多线程技术进行一个汇总&#xff0c;一是复习&#xff0c;二是方便索引&#xff0c;文章部份知识点来源于网络&#xff0c;非本人原创。 一、并行&#xff08;异步&#xff09;&#xff1a; 1.System.Threading.Tasks命名空间下的(TPL)&#xff1a; 1.1&…