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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机上安装FTP客户端软件(AndFTP),实现通过手机访问计算机FTP服务器

    手机上安装FTP客户端软件(AndFTP),实现通过手机访问计算机FTP服务器第一步把手机和计算机连接到同一个局域网中(通过WiFi、数据线等)才能进行下面的操作。(本次操作通过wifi连接)第二步:查看手机的IP地址设置—&amp;amp;amp;gt;WLAN—&amp;amp;amp;gt;点击所连的WiFi名,即可查看手机的ip地址。本机IP地址为:172.20.10.12第三步:ping命令测试手机与电脑是否连接打开DOS命令窗口,输入ping172.20.10.1…

    2022年5月25日
    95
  • JAVA-常用API之StringBuilder

    JAVA-常用API之StringBuilderJAVA-常用API之StringBuilder

    2022年7月17日
    22
  • xshell7怎么连接虚拟机_centos ssh

    xshell7怎么连接虚拟机_centos ssh文章目录一、xshell简介二、xshell安装三、xshell链接虚拟机的centos71.查看虚拟机中centos系统的ip2.利用ip链接一、xshell简介Xshell[1]是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及MicrosoftWindows平台的TELNET协议。Xshell通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复…

    2025年12月6日
    7
  • c语言必背100代码,初学者代码大全(c语言必背100代码)[通俗易懂]

    c语言必背100代码,初学者代码大全(c语言必背100代码)[通俗易懂]一个完全入门初学者如何学代码,读代码和写代码,,我想学代码不知道方向谁能给我指明一个方向?1、学代码:前提是你的复有一个比较系统的学习.认真完成每一个课程中的案例.2、读代码:分制两步走:前期能读懂自己写的代码.2113后期能读懂他人写的代码和大致的知道底层的某些源码的含义.多去5261看开发文档(开发文档建议使用官方提供的4102英文版、不要使用中文自己害自己)3、写代码1653:前提是你要有…

    2022年5月18日
    89
  • python字典的操作

    python字典的操作python 字典操作字典 1 花括号定义的 2 python 内置的数据结构之一 与列表一样是一个可变序列 3 以键值对 冒号前的叫键 冒号后的叫值 的方式存储数据 字典是一个无序的序列 即是通过 hash 函数计算而来 4 元素之前用逗号分隔 5 键具有唯一性 不可重复 当键重复的时候不会报错 而是左边的键会被右边的键所覆盖字典实现原理 类似于查字典 不过 python 中的字典是根据 ke

    2025年6月28日
    3
  • java前端提示反射型xss_解决反射型XSS漏洞攻击「建议收藏」

    java前端提示反射型xss_解决反射型XSS漏洞攻击「建议收藏」1/*2*Copyright(C),2001-2019,xiaoi机器人3*Author:han.sun4*Date:2019/2/2811:395*History:6*7*作者姓名修改时间版本号描述8*/9package…

    2022年6月11日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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