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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2018 PyCharm环境安装教程[通俗易懂]

    2018 PyCharm环境安装教程[通俗易懂]环境准备:1.到PyCharm官网下载PyCharm安装包。2.下载了window版本的双击安装包进行安装。3.自定义软件安装路径(建议路径中不要中文字符)如:F:\DevSoftware\PyCharm2018.14.创建桌面快捷方式并关联*.py文件。5.选择开始菜单文件夹(默认即可),点击安装。6.耐心等待安装。7.安装完成,勾选立即运行PyCharm。8.选择是否导入开发环境配置文件,我…

    2022年8月27日
    2
  • java输出结果保留两位小数,经典好文

    java输出结果保留两位小数,经典好文前言面试技巧另外开篇再说,先上面试干货吧。面试的题目并不一定有严格的顺序关系,有的是从前一个问题延伸而来,(探究的是一个知识的深度),有的是考察面试者的知识广度、有的纯粹是我想到哪里写到哪里的啦。。不要太在意哈,最近工作有点忙。基础知识RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,它是使用Erlang语言来编写的,并且是基于AMQP协议的;RabbitMQ高性能的原因Erlang语言在交换机的交互方面性能优秀的(Erlang语言最初在于交换机领域

    2022年7月8日
    23
  • 组播(Multicast)传输[通俗易懂]

    组播(Multicast)传输[通俗易懂]组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥

    2022年8月5日
    5
  • Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式

    Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式代码中实现了电码本ECB模式和密文分组连接CBC模式,SM3.java和SM4.java为算法实现类,utils的都是根据实现类写的工具,可以根据需要调用杂凑算法SM3的杂凑功能获得杂凑值。SM4.java中sm4_crypt_ecb(SM4_Contextctx,byte[]input)ECB模式加解密方法,根据密钥判断加解密功能sm4_crypt_cbc(…

    2022年9月23日
    3
  • java 实现 按位异或_Java 按位异或的性质及其妙用

    java 实现 按位异或_Java 按位异或的性质及其妙用文章摘要:1、按位异或,可以简单理解成:不进位加法。即:1+1=0;0+0=0;1+0=1;2、任何数和自己异或结果为零。3、按位异或自反性。两次运算操作,可以将最后的结果还原。4、任何数和0做异或值不变,和1异或结果为原操作数取反。5、交换律。不使用中间变量,交换两个数。一、按位异或具有自反性。即:对同一个数据,进行两次按位异或操作,等于数据本身。intdisplayOptions=0x…

    2022年6月6日
    97
  • kubernetes-批量删除Evicted Pods[通俗易懂]

    kubernetes-批量删除Evicted Pods[通俗易懂]前言通过kubectlgetpods发现有很多的EvictedPod,于是想通过脚本删除。脚本#!/bin/bashforeachin$(kubectlgetpods|grepEvicted|awk'{print$1}’);dokubectldeletepods$eachdone还有更简单的写法,如下:kubectlg…

    2022年5月13日
    49

发表回复

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

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