什么是xml

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签
  • XML 被设计为具有自我描述性
  • XML 是 W3C 的推荐标准

在python中可以用以下模块操作xml  

以下是xml文件:

  1. <?xml version="1.0"?>
  2. <data>
  3. <country name="Liechtenstein">
  4. <rank updated="yes">2</rank>
  5. <year>2008</year>
  6. <gdppc>141100</gdppc>
  7. <neighbor name="Austria" direction="E"/>
  8. <neighbor name="Switzerland" direction="W"/>
  9. </country>
  10. <country name="Singapore">
  11. <rank updated="yes">5</rank>
  12. <year>2011</year>
  13. <gdppc>59900</gdppc>
  14. <neighbor name="Malaysia" direction="N"/>
  15. </country>
  16. <country name="Panama">
  17. <rank updated="yes">69</rank>
  18. <year>2011</year>
  19. <gdppc>13600</gdppc>
  20. <neighbor name="Costa Rica" direction="W"/>
  21. <neighbor name="Colombia" direction="E"/>
  22. </country>
  23. </data>

1. 查找、遍历 xml

得到root 节点:

  1. import xml.etree.cElementTree as ET
  2. tree = ET.parse('test.xml')
  3. root = tree.getroot()
  4. print(dir(root))
  5. #['__class__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'attrib', 'clear', 'extend', 'find', 'findall', 'findtext', 'get', 'getchildren', 'getiterator', 'insert', 'items', 'iter', 'iterfind', 'itertext', 'keys', 'makeelement', 'remove', 'set', 'tag', 'tail', 'text']
  6. print(root.tag) #打印结果: data data正好是我们的根节点
  1. import xml.etree.cElementTree as ET
  2. tree = ET.parse('test.xml')
  3. root = tree.getroot() #得到root节点
  4. print(root.tag)
  5. # 遍历文档
  6. for child in root:
  7. print(child.tag,child.attrib) # 标签名和 属性名
  8. print('----------------------')
  9. for i in child:
  10. print(i.tag,i.text)

打印结果:

  1. data
  2. country {'name': 'Liechtenstein'}
  3. ----------------------
  4. rank 2
  5. year 2008
  6. gdppc 141100
  7. neighbor None
  8. neighbor None
  9. country {'name': 'Singapore'}
  10. ----------------------
  11. rank 5
  12. year 2011
  13. gdppc 59900
  14. neighbor None
  15. country {'name': 'Panama'}
  16. ----------------------
  17. rank 69
  18. year 2011
  19. gdppc 13600
  20. neighbor None
  21. neighbor None

只遍历 其中某个 节点:

  1. import xml.etree.cElementTree as ET
  2. tree = ET.parse('test.xml')
  3. root = tree.getroot()
  4. print(root.tag)
  5. # 只遍历 year 节点
  6. for node in root.iter('year'):
  7. print(node.tag,node.text)
  8. # 打印:
  9. # data
  10. # year 2008
  11. # year 2011
  12. # year 2011

----------------------------------------分割线-------------------------------------------------


2.修改和删除xml文档内容

修改:

  1. import xml.etree.cElementTree as ET
  2. tree = ET.parse('test.xml')
  3. root = tree.getroot()
  4. print(root.tag)
  5. #修改
  6. for node in root.iter('year'):
  7. node.text = str(int(node.text) + 1)
  8. node.set('colr','red')
  9. print(node.tag,node.text)
  10. tree.write('xml_test2.xml')

结果:


删除

  1. import xml.etree.cElementTree as ET
  2. tree = ET.parse('test.xml')
  3. root = tree.getroot()
  4. #删除
  5. for country in root.findall('country'):
  6. rank = int(country.find('rank').text)
  7. if rank > 50:
  8. root.remove(country)
  9. tree.write('xml_test3.xml')


---------------------------------------------------分割线-------------------------------------------------------

3.创建xml

  1. import xml.etree.cElementTree as ET
  2. # 创建xml
  3. #生成一个对象
  4. new_xml = ET.Element('namelist')
  5. name = ET.SubElement(new_xml,"name",attrib={"country":"Peking"})
  6. age = ET.SubElement(name,"age",attrib={"type":"child"})
  7. age.text = "22"
  8. et = ET.ElementTree(new_xml) #生成文档对象
  9. et.write("create_xml.xml",encoding="utf-8",xml_declaration=True)
  10. ET.dump(new_xml) #打印生成的格式

打印结果:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <namelist>
  3. <name country="Peking">
  4. <age type="child">22</age>
  5. </name>
  6. </namelist>

并创建了一个 xml文件

Python—XML的更多相关文章

  1. Python XML解析(转载)

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

  2. Python xml 模块

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

  3. Python XML解析之ElementTree

    参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...

  4. python大法好——Python XML解析

    Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...

  5. 【Python】Python XML 读写

    class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...

  6. python xml.etree ElementTree解析 编辑 xml

    python有很多种xml解析方式,不过感觉etree的ElementTree 用起来最方便. #coding=utf-8 from xml.etree import ElementTree impo ...

  7. python - XML文件及其操作

    xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...

  8. Python: xml转json

    1,引言 GooSeeker早在9年前就开始了Semantic Web领域的产品化,MS谋数台和DS打数机是其中两个产品.对web内容做结构化转换和语义处理的主要路线是 XML -> RDF - ...

  9. 【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)

    原文地址:http://hi.baidu.com/tbjmnvbagkfgike/item/6743ab10af43bb24f6625cc5 最近写程序需要用到xml操作,看了看python.org上 ...

  10. python xml.dom模块解析xml

    1. 什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version=&q ...

随机推荐

  1. MySQL关联left join 条件on与where不同

    以下的文章主要讲述的是MySQL关联left join 条件on与where 条件的不同之处,我们现在有两个表,即商品表(products)与sales_detail(销售记录表).我们主要是通过这两 ...

  2. TerraBuilder创建地形之去除影像黑边,填充影像

    最近在Skyline项目中使用TerraBuilder创建地形,由于地形比较大,分块下载卫星影像,然后再TerraBuilder中合并,由于合并.图形等等问题,导致创建处理出来的地形中存在严重的缝隙和 ...

  3. mysql根据某个字段分组根据更新时间获取最新的记录

    我现在有一种统计表,要根据一个字段分组然后根据更新时间,每个分组获取最新的一条记录.命名感觉挺简单的一个需求,然而没什么思路,当然是问度娘了. 度娘的答案很统一,然而都不管用,都是报错的,不知道是不是 ...

  4. C#生成二维码的内容

    生成二维码的内容 using QRCoder; // 生成二维码的内容 string strCode = this.txtQr.Text.Trim(); if (string.IsNullOrWhit ...

  5. hibernate的查询 (比较get 与load)

    hibernate的查询的比较hibernate的查询有很多,Query,find,Criteria,get,load query使用hsql语句,可以设置参数是常用的一种方式 criteria的方式 ...

  6. JAVA常见中文问题的解决方法(转)

    JAVA常见中文问题的解决方法 http://www.java-cn.com/club/article-5876-1.html 以下解决方案是笔者在日常生活中遇到的,希望能对你解决JAVA中文问题有所 ...

  7. HTML表格相关元素

    <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定义表格行,th 元素定义表头,td 元素定义 ...

  8. 使用git版本管理工具

    1.(1)正常提交:git add 提交文件 git init   //git init之后建立一个.gitignore可以避免node_modules这类文件夹提交 git add . git co ...

  9. Siebel 集成中的“发布-订阅”与“阅读”

    将 Siebel 应用程序中存储的数据提供给企业中的其他应用程序时,通常需要遵循以下两种基本模式之一: 发布-订阅 阅读 “发布-订阅”是一种机制,根据该机制,一个系统(发布者)将更改或更新的数据提供 ...

  10. (五)TortoiseSVN 客户端-----安装

    svn客户端类型 svn客户端需要通过网络访问svn服务端提交文件.查询文件等,可通过以下客户端类型访问svn服务端: 使用Subversion提供的客户端命令,使用方式:在命令行下输入命令操作. 使 ...