是实现不同语言或程序之间进行数据交换的协议;
通常浏览器返回的字符串有三种格式:
1、HTML
2、Json
3、
其中, 可以在页面上做展示,可以作为程序的配置文件(获取字符串类型的 格式数据)
的特点:以开始和结尾,包含根节点、子节点;
每一个节点都是element对象,节点下可以嵌套节点,element对象下可以获得各个方法。比如:tag(节点名称)、attib(属性)、text(内容)、makeelement(创建一个新节点)、append(追加一个子节点)等
如下所示的 文件:
案例1:找根节点:
from .etreeimportElementTreeasET
tree=ET.parse('hh. ')
root=tree.getroot()#获取 的根节点
print('根节点',root)#但因根节点,类型均为element;
print('根节点的名称',root.tag)#获取根节点名字,
print('根节点的属性',root.attrib)#获取根节点名字,
效果:
案例2:找二级、三级等节点
from .etreeimportElementTreeasET
tree=ET.parse('hh. ')
root=tree.getroot()#获取 的根节点
foriinroot:
print('二级节点名称',i.tag,'二级节点属性',i.attrib)
forgradechildini:
print('3级节点名称:',gradechild.tag,'3级节点内容:',gradechild.text)
效果:
解析 的两种方式:
1、解释字符串,无ElementTree,自己打开文件拿到,或者发送request模块拿到返回值
将字符串解析为
from .etreeimportElementTreeasET
# 打开文件,读取 内容
str_ =open('xo. ','r').read()
# 将字符串解析成 特殊对象,root代指 文件的根节点
root = ET. (str_ )
2、解析文件,会有用ElementTree,两个步骤拿到Element,将文件解析为 ;ElementTree可以写入东西
from .etreeimportElementTreeasET
# 直接解析 文件
tree = ET.parse("xo. ")
# 获取 文件的根节点
root = tree.getroot()
案例3:修改 ,用字符方式读取的;
#以字符串导入
from .etreeimportElementTreeasET
str_ =open('hh. ','r').read()
root=ET. (str_ )
print(root.tag)#拿到所以的根节点
#循环所有的year节点
foriinroot.iter('year'):
#将year内容自增1
new_year=int(i.text)+1
i.text=str(new_year)
#设置属性
i.set('name',"hx")
i.set('age','18')
#删除属性
# del i.attrib['name']
#操作完了,需要保存,要用到ElementTree
tree=ET.ElementTree(root)
tree.write('hhnew',encoding='utf-8')#如果用文件方式解析,则可以直接用此句
执行结果:新增一个文件hhnew,内容如下:已修改所有内容
案例4:在Element基础上新增一个节点,可以写上内容
#在element的基础上新增一个节点,并写入内容
from .etreeimportElementTreeasET
tree=ET.parse('hh. ')
root=tree.getroot()
ele=ET.Element("hh",{'k1':'b1'})#创建element对象
ele.text="写入新的内容"
root.append(ele)#append
tree.write('hh_new2',encoding='utf-8')#写入新的文件
执行结果:会新增如下一句话
案例5:创建一个
#创建一个新的
from .etreeimportElementTreeasET
from .domimportminidom
defprettify(ele):#将所有的节点转换成字符串,并添加缩进
rough_string=ET.tostring(ele,'utf-8')
str=minidom.parseString(rough_string)
returnstr.topretty (indent=" ")#添加缩进
#创建根节点
root=ET.Element('famliy')
#创建节点的大儿子
son1=ET.Element('son',{'name':'儿子1'})
#创建节点的小儿子
son2=ET.Element('son',{'name':'儿子2'})
#在大儿子下创建两个孙子
grandson1=ET.Element('grandson',{'name':'儿子1孙子1'})
grandson1.text='孙子1的节点内容'
grandson2=ET.Element('grandson',{'name':'儿子1孙子2'})
grandson2.text='孙子2的节点内容'
#把孙节点更新到儿节点
son1.append(grandson1)
son1.append(grandson2)
#把儿节点更新到根节点
root.append(son1)
root.append(son2)
raw_str=prettify(root)#缩进
#用打开文件方式写入
f=open('hhnew3','w',encoding='utf-8')
f.write(raw_str)
f.close()
执行结果:
继续阅读与本文标签相同的文章
-
阿里云企业邮箱申请注册有哪些版本,购买有什么优惠活动
2026-05-19栏目: 教程
-
阿里云创峰会聊城站高峰对话一:品牌明星的创业故事与启示
2026-05-19栏目: 教程
-
2019阿里云910会员节大促主会场全攻略
2026-05-19栏目: 教程
-
高榕资本高翔:发展产业互联网,基础条件已经具备
2026-05-19栏目: 教程
-
高榕资本高翔:未来5年高度关注5G生态和云生态
2026-05-19栏目: 教程
