Python—XML
什么是xml
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
在python中可以用以下模块操作xml
以下是xml文件:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
1. 查找、遍历 xml
得到root 节点:
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
print(dir(root))
#['__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']
print(root.tag) #打印结果: data data正好是我们的根节点
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot() #得到root节点
print(root.tag)
# 遍历文档
for child in root:
print(child.tag,child.attrib) # 标签名和 属性名
print('----------------------')
for i in child:
print(i.tag,i.text)
打印结果:
data
country {'name': 'Liechtenstein'}
----------------------
rank 2
year 2008
gdppc 141100
neighbor None
neighbor None
country {'name': 'Singapore'}
----------------------
rank 5
year 2011
gdppc 59900
neighbor None
country {'name': 'Panama'}
----------------------
rank 69
year 2011
gdppc 13600
neighbor None
neighbor None
只遍历 其中某个 节点:
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
print(root.tag)
# 只遍历 year 节点
for node in root.iter('year'):
print(node.tag,node.text)
# 打印:
# data
# year 2008
# year 2011
# year 2011
----------------------------------------分割线-------------------------------------------------
2.修改和删除xml文档内容
修改:
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
print(root.tag)
#修改
for node in root.iter('year'):
node.text = str(int(node.text) + 1)
node.set('colr','red')
print(node.tag,node.text)
tree.write('xml_test2.xml')
结果:


删除
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
#删除
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country)
tree.write('xml_test3.xml')

---------------------------------------------------分割线-------------------------------------------------------
3.创建xml
import xml.etree.cElementTree as ET
# 创建xml
#生成一个对象
new_xml = ET.Element('namelist')
name = ET.SubElement(new_xml,"name",attrib={"country":"Peking"})
age = ET.SubElement(name,"age",attrib={"type":"child"})
age.text = "22"
et = ET.ElementTree(new_xml) #生成文档对象
et.write("create_xml.xml",encoding="utf-8",xml_declaration=True)
ET.dump(new_xml) #打印生成的格式
打印结果:
<?xml version='1.0' encoding='utf-8'?>
<namelist>
<name country="Peking">
<age type="child">22</age>
</name>
</namelist>
并创建了一个 xml文件

Python—XML的更多相关文章
- Python XML解析(转载)
Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...
- Python xml 模块
Python xml 模块 TOC 什么是xml? xml和json的区别 xml现今的应用 xml的解析方式 xml.etree.ElementTree SAX(xml.parsers.expat) ...
- Python XML解析之ElementTree
参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...
- python大法好——Python XML解析
Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...
- 【Python】Python XML 读写
class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...
- python xml.etree ElementTree解析 编辑 xml
python有很多种xml解析方式,不过感觉etree的ElementTree 用起来最方便. #coding=utf-8 from xml.etree import ElementTree impo ...
- python - XML文件及其操作
xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...
- Python: xml转json
1,引言 GooSeeker早在9年前就开始了Semantic Web领域的产品化,MS谋数台和DS打数机是其中两个产品.对web内容做结构化转换和语义处理的主要路线是 XML -> RDF - ...
- 【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)
原文地址:http://hi.baidu.com/tbjmnvbagkfgike/item/6743ab10af43bb24f6625cc5 最近写程序需要用到xml操作,看了看python.org上 ...
- python xml.dom模块解析xml
1. 什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version=&q ...
随机推荐
- 深入理解JavaScript系列(28):设计模式之工厂模式
介绍 与创建型模式类似,工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类. 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类.该模式使一个类的实例化延迟到了子类.而子 ...
- 搭建一个最简单的node服务器
搭建一个最简单的node服务器 1.创建一个Http服务并监听8888端口 2.使用url模块 获取请求的路由和请求参数 var http = require('http'); var url = r ...
- Base class for cloning an object in C#
Base class for cloning an object in C# /// <summary> /// BaseObject class is an abstract class ...
- 介绍一款web端的截图工具
牛牛截图,web端的一款截图工具,下面是代码及实例. 依赖jquery-1.7.min.js /**************************************************** ...
- ubuntu GITLAB完全导入SVN(提交历史,用户)项目
从SVN导入到GITLAB目前没有直接的方案,通常需要通过GIT转换:SVN –>GIT –>GITLAB.通过这种方式,将SVN的提交历史,用户信息一并导入到gitlab 注:本文只适用 ...
- 【Linux】文件操作函数(系统调用函数)
重点在于学习--思路与方法 举一反三 一.文件描述符 系统分配给文件的数字编号 二.函数学习 P.S.Man命令使用方法 manual 前三个章节 命令:系统调用函数:库函数 man read //r ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- 有关在新版mac上 git 环境变量的配置问题
前段时间买的新版 mpb ,各种环境什么都没有配置,想着在网上边搜边摸索着将各种开发工具逐步配置齐全,各种问题不断出现,不知道是不是新版的原因不兼容. 其中 git 的配置尤为奇怪.在git官网上直接 ...
- SQL Server ->> Move characters in string N position(s) forward/backward based on ASCII table(根据ASCII表的排列顺序将字符串内的数值往前或者后移N个位)
去年无聊的时候想到想玩一下根据ASCII表的排列顺序将字符串内的数值往前或者后移N个位,顺便看一下是T-SQL性能好还是用C#写CLR函数处理得快.结果是在50万行以下其实两者差距很小,当然这是在我的 ...
- 启动PyCharm cannot start under Java 1.7 : Java 1.8 or later is required 解决方案
1.安装jdk8 2.配置环境变量 JAVA_HOME : C:\Program Files (x86)\Java\jre1.8.0_144 java原本的环境变量配置不变,只修改JAVA_HOME