python3 xml_python3 xml模块

本文介绍了XML的基本概念,展示了如何使用Python3的xml.etree.ElementTree模块进行XML内容的解析、创建、修改和格式化。通过示例代码,演示了XML文件的读取、节点操作以及如何将修改后的内容写回XML文件。
摘要由CSDN通过智能技术生成

一.XML简介:

XML 指可扩展标记语言(eXtensible Markup Language),是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下:

2

2028

141100

5

2031

59900

69

2031

13600

二.XML操作

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import requests

from xml.etree import ElementTree as ET

from xml.dom import minidom #跟ElementTree类似,性能不好,提供了一个格式化xml的功能

#检查QQ登录状态

#使用第三方模块requests发送http请求,或者XML格式内容

r=requests.get("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=471749572")

result=r.text #字符串类型#result=json.loads(r.text)#print(type(result),result)

print(result)

View Code

更多关于requests模块请猛击这里

#解析XML内容

#XML接收一个参数:字符串,将字符串转换为特殊对象

node=ET.XML(result)

#获取内容

if node.text=="Y":

print("在线")

else:

print("离线")

#解析字符串方式,修改保存

for node in root.iter("year"):

new_year=int(node.text)+1node.text=str(new_year)

node.set("name","calvin") #增加name属性

node.set("age","18") #增加age属性

node.get("name")#del node.attrib["name"] #删除name属性

tree.write("xml_exemple.xml") #将以上修改的内容写入到xml文件

View Code

# 解析文件的方式,并对xml文件就行修改

# 打开并解析xml文件内容

tree=ET.parse("xml_exemple.xml")

#获取根节点

root=tree.getroot()

#迭代循环查找year信息并修改year

for node in root.iter("year"):

new_year=int(node.text)+1node.text=str(new_year)

node.set("name","calvin") #增加name属性

node.set("age","18") #增加age属性

node.get("name")#del node.attrib["name"] #删除name属性

tree.write("xml_exemple.xml") #将以上修改的内容写入到xml文件

View Code

1.创建xml文件

# 创建根节点

root = ET.Element("family")

#创建节点大儿子

son1 = ET.Element('son', {'name': 'kobe'})

# 创建节点小儿子

son2 = ET.Element('son', {"name": 'calvin'})

# 在两个儿子中分别创建两个孙子

grandson1 = ET.Element('grandson', {'name': 'kobe_jr','age':"8"})

grandson2 = ET.Element('grandson', {'name': 'calvin_jr','age':"24"})

son1.append(grandson1)

son2.append(grandson2)

# 把儿子添加到根节点中

root.append(son1)

root.append(son2)

tree = ET.ElementTree(root)

tree.write('family_tree.xml',encoding='utf-8', short_empty_elements=False)

2.新增节点有两种方式

tree=ET.parse("xml_exemple.xml")

# 一切皆对象,对象都由类创建,对象所有的功能都跟在与其相关的类中

# 1、tree这个对象由ElementTree类创建,tree等同于ElementTree()

# 2、getroot()获取xml根节点

# 3、write()将内存中的xml写入到文件

#获取根节点

root=tree.getroot()

#第一种方式:调用makeelement对象创建节点,创建的节点类型为Element类型

# s=root.makeelement("test",{"k1":"v1"})

# ss=s.makeelement("test02",{"k2":"v2"})

#第二种方式:直接用element类创建,与上面用makeelement函数创建节点一样

s=ET.Element("test",{"k1":"v1"})

ss=ET.Element("test02",{"k2":"v2"})

root.append(s)

s.append(ss)

tree.write("xml_exemple.xml")

3.格式化创建的xml文件

#创建xml文件

# 创建根节点

root = ET.Element("family")

# 创建节点大儿子

son1 = ET.Element('son', {'name': '科比'})

# 创建节点小儿子

son2 = ET.Element('son', {"name": 'calvin'})

# 在两个儿子中分别创建两个孙子

grandson1 = ET.Element('grandson', {'name': 'kobe_jr','age':"8"})

grandson2 = ET.Element('grandson', {'name': 'calvin_jr','age':"24"})

son1.append(grandson1)

son2.append(grandson2)

# 把儿子添加到根节点中

root.append(son1)

root.append(son2)

tree = ET.ElementTree(root)

tree.write('family_tree.xml',encoding='utf-8', short_empty_elements=False,xml_declaration=True)

#定义函数用于格式化xml文件内容

defMyWrite(elem,file_path):

rough_string= ET.tostring(elem, 'utf-8')

reparsed=minidom.parseString(rough_string)

new_str= reparsed.toprettyxml(indent="\t")

f=open(file_path,'w',encoding='utf-8')

f.write(new_str)

f.close()

MyWrite(root,'new_family.xml')

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值