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 ...
随机推荐
- Prestashop使用心得
如果对Prestashop好奇的小伙伴快点进来看看吧,我开始接触了Prestashop这个开源的系统,这个一个非常棒的电商系统.因为我对这个Prestashop系统完全没有了解,但是上网却看不到太多的 ...
- SpringBoot - 工程搭建
SpringBoot 简介 1.Spring 的封装.其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 2.SpringCloud 微服务的基础 搭建环境 jdk 1.8 + mave ...
- C# 面试题 (四)
1, 请你说说.NET中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多. 结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数 ...
- Windows phone 8.1应用集成cortana语音命令
微软推出小娜已经有一段时间了,最近恰好在研究其用法,就随便写点记录一下自己的心得. 在研究时参考了@王博_Nick的博客:http://www.cnblogs.com/sonic1abc/p/3868 ...
- win10下MySQL 5.7.20解压版安装步骤
1.从官网下载MySQL5.7.20解压版64位:https://dev.mysql.com/downloads/file/?id=473309. 2.解压(我的解压路径为:E:\mysql-5.7. ...
- 【linux学习笔记】began,每次玩这个都特别着迷
胡乱的安装,通过虚拟机,从DVD加载开始,当然网上有大段的装机教程,装了两个Linux发行版,一个是centos7,一个是ubuntu18.04. 分区那些事: 因为处于学习阶段,所以总是因为分区问题 ...
- SharePoint Tricks - HTML & CSS & JavaScript
1. 隐藏Quick Launch <style type="text/css">/*-- Hide Quick Launch --*/#s4-leftpanel{ ...
- Linux漏洞分析入门笔记-Off-By-One(栈)
ubuntu-16.04.5(X86) IDA7.0 0x00.漏洞描述 1.什么是off by one?又称1字节溢出. 源字符串长度等于目标缓冲区长度时,将源字符串复制到目标缓冲区可能会导致off ...
- 30分钟LINQ教程 【转载】
原文地址:http://www.cnblogs.com/liulun/archive/2013/02/26/2909985.html 在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有 ...
- 用AutoHotkey重置Excel的Ctrl+Alt+方向键选择的范围
当前选择是蓝色单元格,原来的Ctrl+Alt+方向键,是选中[蓝色]到[红色]单元格的区域, 经过脚本修改后,则是[蓝色]到[黄色]的区域,应该更符合日常使用, 特别是表格比较大的时候,一直按住鼠标滚 ...