1、基本概念

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。

不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀。

至今很多传统公司如金融行业的很多系统的接口还主要是xml。

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

  1. <data>
    <country name="Liechtenstein">
    <rank updated="yes">2</rank>
    <year attr_test="yes">2009</year>
    <gdppc>141100</gdppc>
    <neighbor direction="E" name="Austria" />
    <neighbor direction="W" name="Switzerland" />
    </country>
    <country name="Singapore">
    <rank updated="yes">5</rank>
    <year attr_test="yes">2012</year>
    <gdppc>59900</gdppc>
    <neighbor direction="N" name="Malaysia" />
    </country>
    <country name="Panama">
    <rank updated="yes">69</rank>
    <year attr_test="yes">2012</year>
    <gdppc>13600</gdppc>
    <neighbor direction="W" name="Costa Rica" />
    <neighbor direction="E" name="Colombia" />
    </country>
    <state>
    <name>德州</name>
    <population>德州</population>
    </state>
    </data>

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

2、遍历xml文档

  1.  
  1. import xml.etree.ElementTree as ET
  2. tree = ET.parse("xmltest.xml")
  3. root = tree.getroot()#相当于f.seek(0)
  4. print(root.tag)#输出最开始的date
  1. #遍历xml文档
  2. for child in root:
  3. print(child.tag, child.attrib
  4. for i in child:
  5. print(i.tag,i.text)
    #------------------------------------------------------

---------- country {'name': 'Liechtenstein'}#child.tag,child.attrib
rank 2
year 2009
gdppc 141100#i.tag,i.text
neighbor None
neighbor None
---------- country {'name': 'Singapore'}
rank 5
year 2012
gdppc 59900
neighbor None
---------- country {'name': 'Panama'}
rank 69
year 2012
gdppc 13600
neighbor None
neighbor None
---------- state {}
name 德州
population 德州

#只遍历year 节点

  1. for node in root.iter('year'):
  2. print(node.tag,node.text)
    #-----------------------------------

year 2009
year 2012
year 2012

3、修改和删除xml文档内容

  1. import xml.etree.ElementTree as ET
  2.  
  3. tree = ET.parse("xmltest.xml")
  4. root = tree.getroot()
  5.  
  6. #修改
  7. for node in root.iter('year'):
  8. new_year = int(node.text) + 1
  9. node.text = str(new_year)
  10. node.set("updated","yes")
  11.  
  12. tree.write("xmltest.xml")
  13.  
  14. #删除node
  15. for country in root.findall('country'):
  16. rank = int(country.find('rank').text)
  17. if rank > 50:
  18. root.remove(country)
  19.  
  20. tree.write('output.xml')

4、自己创建xml文档

  1. import xml.etree.ElementTree as ET
  2.  
  3. new_xml = ET.Element("namelist")
  4. name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
  5. age = ET.SubElement(name,"age",attrib={"checked":"no"})
  6. sex = ET.SubElement(name,"sex")
  7. sex.text = ''
  8. name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
  9. age = ET.SubElement(name2,"age")
  10. age.text = '
  11.  
  12. et = ET.ElementTree(new_xml) #生成文档对象
  13. et.write("test.xml", encoding="utf-8",xml_declaration=True)
  14.  
  15. ET.dump(new_xml) #打印生成的格式

16 python xml模块的更多相关文章

  1. Python xml 模块

    Python xml 模块 TOC 什么是xml? xml和json的区别 xml现今的应用 xml的解析方式 xml.etree.ElementTree SAX(xml.parsers.expat) ...

  2. Python xml模块

    xml模块 自己创建xml文档 import xml.etree.cElementTree as ET new_xml = ET.Element("personinfolist") ...

  3. Day 16 : Python 时间模块[time,]datetime[]及第三方模块的下载与安装

    在进行python程序开发时,除了可以使用python内置的标准模块外,还右许多第三方模块使用,可以在python官网找到. 在使用第三方模块时,需要下载并安装此模块,然后就可以使用标准模块一样导入并 ...

  4. python(32)——【shelve模块】【xml模块】

    一. shelve模块 json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题. shelve模块是一个简 ...

  5. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  6. python笔记7 logging模块 hashlib模块 异常处理 datetime模块 shutil模块 xml模块(了解)

    logging模块 日志就是记录一些信息,方便查询或者辅助开发 记录文件,显示屏幕 低配日志, 只能写入文件或者屏幕输出 屏幕输出 import logging logging.debug('调试模式 ...

  7. python常用模块:pickle、shelve、json、xml、configparser

    今日内容主要有: 一.pickle模块二.shelve模块三.json模块四.json练习五.xml模块 六.xml练习七.configparser模块 一.pickle模块 #pickle是一个用来 ...

  8. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

  9. python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块

    一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...

随机推荐

  1. SQL Server 中关于EXCEPT和INTERSECT的用法

    熟练使用SQL Server中的各种用法会给查询带来很多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本支持. EXCEPT是指在第一个集合 ...

  2. Ribbon Control

    https://documentation.devexpress.com/#WindowsForms/CustomDocument2492 The Ribbon Control replaces tr ...

  3. revit API 生成墙图元

    由于Revit的版本问题,在网上找的生成墙图元的代码,在我机器上的Revit 2016中编译不能通过,通过多次调试,终于找到在revit 2016中使用API生成墙图元的代码,现在贴出来. 下面的代码 ...

  4. Oracle数据泵的使用

    几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle  database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...

  5. Collection与Collections,Array与Arrays的区别

    Collection 和 Collections的区别 Collection 在Java.util下的一个接口,它是各种集合结构的父接口.继承与他的接口主要有Set 和List. Collection ...

  6. 【appium】根据accessibility_id定位元素

    如何获得AccessibilityId 可以通过UIAutomatorViewer或者Appium Inspector获得.Accessibility ID在Android上面就等同于contentD ...

  7. HDU 2066 一个人的旅行 (Dijkstra算法)

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  8. JSON: JSON 用法

    ylbtech-JSON: JSON 用法 1. JSON Object creation in JavaScript返回顶部 1. <!DOCTYPE html> <html> ...

  9. REST-assured 3发送图片

    上传图片,需要media_id,从上传临时素材获取:https://work.weixin.qq.com/api/doc#10112 https://qyapi.weixin.qq.com/cgi-b ...

  10. freePBX汉化方法记录——备忘

    FreePBX汉化[root@bgcc69:/var/www/html/admin/i18n/zh_CN/LC_MESSAGES]$pwd/var/www/html/admin/i18n/zh_CN/ ...