python入门(二十一):xml模块
2017-08-17 19:29
239 查看
1.网站返回的字符串的表现形式:1.html
2.json
3.xml
2.xml: XML是实现不同语言或程序之间进行数据交换的协议
2.操作XML
XML文件
a.解析XML文档的所有内容
(1) 利用ElementTree.XML将字符串解析成xml对象
(2)利用ElementTree.parse将文件直接解析成xml对象
b.遍历XML中指定的节点
c.修改节点内容
由于修改节点时,均是再内存中进行,其不会影响文件中的内容,如果想要修改,则需要重新将内存中内容写入文件
(1)解析字符串方式 ,修改,保存
(2)解析文件方式,修改,保存
d.删除节点
3.创建XML文档
方式一:
方式二:
方式三:
2.json
3.xml
2.xml: XML是实现不同语言或程序之间进行数据交换的协议
2.操作XML
XML文件
<data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year age="18">2026</year> <gdppc>141100</gdppc> <neighbor direction="E" name="Austria" /> <neighbor direction="W" name="Switzerland" /> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year age="18">2030</year> <gdppc>59900</gdppc> <neighbor direction="N" name="Malaysia" /> </country> <country name="Panama"> <rank updated="yes">69</rank> <year age="18">2030</year> <gdppc>13600</gdppc> <neighbor direction="W" name="Costa Rica" /> <neighbor direction="E" name="Colombia" /> </country> </data>
a.解析XML文档的所有内容
(1) 利用ElementTree.XML将字符串解析成xml对象
from xml.etree import ElementTree as ET # 打开文件,读取XML内容 str_xml = open('db.xml', 'r').read() # 将字符串解析成xml特殊对象,root代指xml文件的根节点 root = ET.XML(str_xml)
(2)利用ElementTree.parse将文件直接解析成xml对象
from xml.etree import ElementTree as ET # 直接解析xml文件 tree = ET.parse("xo.xml") # 获取xml文件的根节点 root = tree.getroot()
b.遍历XML中指定的节点
from xml.etree import ElementTree as ET # 直接解析xml文件 tree = ET.parse("db") # 获取xml文件的根节点 root = tree.getroot() # 顶层标签 print(root.tag) # 遍历XML中所有的year节点 for node in root.iter('year'): # 节点的标签名称和内容 print(node.tag, node.text)
c.修改节点内容
由于修改节点时,均是再内存中进行,其不会影响文件中的内容,如果想要修改,则需要重新将内存中内容写入文件
(1)解析字符串方式 ,修改,保存
from xml.etree import ElementTree as ET #打开文件,读取XML内容 str_xml = open('db', 'r').read() # 将字符串解析成xml特殊对象,root代指xml文件的根节点 root = ET.XML(str_xml) # 顶层标签 print(root.tag) # 循环所有的year节点 for node in root.iter('year'): # 将year节点中的内容自增一 new_year = int(node.text) + 1 node.text = str(new_year) # 设置属性 node.set('name', 'alex') node.set('age', '18') # 删除属性 del node.attrib['name'] tree = ET.ElementTree(root) tree.write('db')
(2)解析文件方式,修改,保存
from xml.etree import ElementTree as ET # 直接解析xml文件 tree = ET.parse("db") # 获取xml文件的根节点 root = tree.getroot() # 顶层标签 print(root.tag) # 循环所有的year节点 for node in root.iter('year'): # 将year节点中的内容自增一 new_year = int(node.text) + 1 node.text = str(new_year) # 设置属性 node.set('name', 'alex') node.set('age', '18') # 删除属性 del node.attrib['name'] tree.write("db")
d.删除节点
# 遍历data下的所有country节点 for country in root.findall('country'): # 获取每一个country节点下rank节点的内容 rank = int(country.find('rank').text) if rank > 50: # 删除指定country节点 root.remove(country)
3.创建XML文档
方式一:
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("famliy") # 创建节点大儿子 son1 = ET.Element('son', {'name': '儿1'}) # 创建小儿子 son2 = ET.Element('son', {"name": '儿2'}) # 在大儿子中创建两个孙子 grandson1 = ET.Element('grandson', {'name': '儿11'}) grandson2 = ET.Element('grandson', {'name': '儿12'}) son1.append(grandson1) son1.append(grandson2) # 把儿子添加到根节点中 root.append(son1) root.append(son2) tree = ET.ElementTree(root) tree.write('oooo.xml', encoding='utf-8', short_empty_elements=False)
方式二:
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("famliy") # 创建大儿子 son1 = root.makeelement('son', {'name': '儿1'}) # 创建小儿子 son2 = root.makeelement('son', {"name": '儿2'}) # 在大儿子中创建两个孙子 grandson1 = son1.makeelement('grandson', {'name': '儿11'}) grandson2 = son1.makeelement('grandson', {'name': '儿12'}) son1.append(grandson1) son1.append(grandson2) # 把儿子添加到根节点中 root.append(son1) root.append(son1) tree = ET.ElementTree(root) tree.write('oooo.xml', encoding='utf-8', short_empty_elements=False)
方式三:
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("famliy") # 创建节点大儿子 son1 = ET.SubElement(root, "son", attrib={'name': '儿1'}) # 创建小儿子 son2 = ET.SubElement(root, "son", attrib={"name": "儿2"}) # 在大儿子中创建一个孙子 grandson1 = ET.SubElement(son1, "age", attrib={'name': '儿11'}) grandson1.text = '孙子' et = ET.ElementTree(root) #生成文档对象 et.write("test.xml", encoding="utf-8", xml_declaration=True, short_empty_elements=False)
相关文章推荐
- python学习之路-7 模块configparser/xml/shutil/subprocess以及面向对象初级入门
- 《每日一课》Python入门之datetime内置模块的使用
- 基础入门_Python-模块和包.运维开发中watchdog事件监视的最佳实践?
- python-minidom模块【解析xml】
- Python 学习入门(35)—— 模块
- [Python入门及进阶笔记]Python-基础-数字处理相关模块
- 《每日一课》Python入门之其他內建模块的使用一
- Python入门(六)——self,类,方法,__init__,类对象,类变量,文件操作,判断回文,pickle模块用法
- python小白-day6 xml处理模块
- Python flask模块快速入门
- 基础入门_Python-模块和包.运维开发中MySQLdb CRUD操作的最佳实践?
- Python入门简单的静态网页爬虫2.0 (实现各模块的具体方法)
- python入门:关于堆操作的一个模块heapq及其函数
- python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块
- 通过xml文件给图像加目标框的python模块
- python模块:xml.dom.minidom
- python re模块 快速入门
- 基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?
- Python标准模块——xml
- 【转载】python xml.dom模块…