python数据交换模块-XML

python数据交换模块-XML

大家好,又见面了,我是全栈君。

XML 可扩展标记语言

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

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

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

xml协议在各个语言里的都是支持的,在python中可以用以下模块操作xml  

import xml.etree.ElementTree as ET   #导入模块别名为ET
tree = ET.parse("xml-test.xml")    #打开xml-test.xml文件
root = tree.getroot()
print(root)             #是一个内存地址
print(root.tag)         #是xml文件的tag
#遍历xml文档
for child in root:
        print(child.tag,child.attrib,child.text)
        for i in child:
                print(i.tag,i.text,i.attrib)

#只遍历year节点
for node in root.iter("year"):
        print(node.tag,node.text)

修改和删除xml文档内容
import xml.etree.ElementTree as ET

tree = ET.parse("xmltest.xml")
root = tree.getroot()

#修改
for node in root.iter('year'):      #只遍历iter
        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文档

import xml.etree.ElementTree as ET

new_xml = ET.Element("personinfolist")        #根节点
personinfo = ET.SubElement(new_xml,"personinfo",attrib={
   
   "enrolled":"yes"}) #new_xml子节点、节点名字、节点属性
name = ET.SubElement(personinfo,"name")
name.text = "aaa li"
age = ET.SubElement(personinfo,"age",attrib={
   
   "checked":"no"}) #
sex = ET.SubElement(personinfo,"sex")
age.text = '33'

personinfo2 = ET.SubElement(new_xml,"personinfo",attrib={
   
   "enrolled":"no"})
name2 = ET.SubElement(personinfo2,"name")
name2.text = "aaa wang"
age = ET.SubElement(personinfo2,"age")
age.text = '19'

et = ET.ElementTree(new_xml) #生成文档对象
et.write("test.xml", encoding="utf-8",xml_declaration=True)

ET.dump(new_xml) #打印生成的格式
结果:
<?xml version='1.0' encoding='utf-8'?>
<personinfolist>
    <personinfo enrolled="yes">
        <name>aaa li</name>
        <age checked="no">33</age>
        <sex />
    </personinfo>
    <personinfo enrolled="no">
        <name>aaa wang</name>
        <age>19</age>
    </personinfo>

</personinfolist>




本文转自506554897 51CTO博客,原文链接:,如需转载请自行联系原作者 http://blog.51cto.com/506554897/2047335

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107956.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ticket是啥意思_ticket中文

    ticket是啥意思_ticket中文<?phpheader("Content-Type:text/html;charset=utf8");$ee=urlencode("gQFI8DoAAAAAA

  • 池化层的作用[通俗易懂]

    maxpooling是CNN当中的最大值池化操作,其实用法和卷积很类似tf.nn.max_pool(value,ksize,strides,padding,name=None)参数是四个,和卷积很类似:第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是featuremap,依然是[batch,height,width,channels]这样的shape第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1,height,width,1],

  • javaweb-spring-52

    javaweb-spring-52

  • idea2021.11激活码_最新在线免费激活

    (idea2021.11激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用

    Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用欢迎技术交流和帮助,提供所有IT相关的服务,有需要请联系博主QQ:21497936,若该文为原创文章,未经允许不得转载原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/77847820目录效果​Demo下载地址QCustom…

    2022年10月17日
  • jvm触发full gc条件(Linux内存管理机制)

    1、Java垃圾回收机制GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。缺点就是:1.有可能不知不…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号