博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python的XML处理模块ElementTree
阅读量:6757 次
发布时间:2019-06-26

本文共 3782 字,大约阅读时间需要 12 分钟。

ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。它在Python2.5以后成为Python标准库的一部分,但是Python2.4之前需要单独安装。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。
ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

构建XML文件

ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。
Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。
SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点
Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。
ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。
#encoding=utf-8import xml.etree.ElementTree as ET#新建xml文件def buildNewsXmlFile():        #设置一个新节点,并设置其标签为root        root = ET.Element("root")        #在root下新建两个子节点,设置其名称分别为sina和chinabyte        sina = ET.SubElement(root, "sina")        chinabyte = ET.SubElement(root, "chinabyte")        #在sina下新建两个子节点,设置其节点名称分别为number和first        sina_number = ET.SubElement(sina, "number")        sina_number.text = "1"        sina_first = ET.SubElement(sina, "first")        sina_first.text = "http://roll.tech.sina.com.cn/internet_all/index_1.shtml"        #在chinabyte下新建两个子节点,设置其节点名称为number和first        chinabyte_number = ET.SubElement(chinabyte, "number")        chinabyte_number.text = "1"        chinabyte_first = ET.SubElement(chinabyte, "first")        chinabyte_first.text = "http://www.chinabyte.com/more/124566.shtml"        #将节点数信息保存在ElementTree中,并且保存为XML格式文件        tree = ET.ElementTree(root)        tree.write("urlfile.xml")

解析和修改XML文件

ElementTree.parse(source, parser=None),将xml文件加载并返回ElementTree对象。parser是一个可选的参数,如果为空,则默认使用标准的XMLParser解析器。
ElementTree.getroot(),得到根节点。返回根节点的element对象。
Element.remove(tag),删除root下名称为tag的子节点
以下函数,ElementTree和Element的对象都包含。
find(match),得到第一个匹配match的子节点,match可以是一个标签名称或者是路径。返回个element
findtext(match,default=None),得到第一个配置的match的element的内容
findall(match),得到匹配match下的所有的子节点,match可以是一个标签或者是路径,它会返回一个list,包含匹配的elements的信息
iter(tag),创建一个以当前节点为根节点的iterator。
这里有一个xml文件
1
2008
141100
4
2011
59900
68
2011
13600
现在是解析xml文件的代码
#解析Xml文件def parseXmlFile(xml_name):        #将XMl文件加载并返回一个ELementTree对象        tree = ET.parse(xml_name)        #得到第一个匹配sina标签的Element对象        sina = tree.find("contry")        #得到sina的SubElement        for sub_tag in sina:                print sub_tag.text        #得到所有匹配sina标签的Element对象的list集合        list_contry = tree.findall("contry")        for contry in list_contry:                for sub_tag in contry:                        print sub_tag.text	#修改xml文件        for rank in tree.iter('rank')        new_rank = int(rank.text)+1        rank.text = str(new_rank)        rank.set('updated', 'yes')        tree.write(xml_name)
第一次的输出是:1,2008,14100
第二次的输出是:1,2008,14100,4,2011,59900,68,2011,13600
修改后的xml文件为
2
2008
141100
5
2011
59900
69
2011
13600

转载于:https://www.cnblogs.com/fmgao-technology/p/9087584.html

你可能感兴趣的文章
SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest...
查看>>
小米:开源不仅要站在巨人的肩膀上,还要为巨人指方向
查看>>
百度启动高管退休计划,总裁张亚勤今年十月退休
查看>>
SpringBoot启动时的Banner设置
查看>>
xming + putty 搭建远程图形化ssh访问ubuntu 14.04
查看>>
【Sigma敏捷版系列文章】从运行流程和list-watch看kubernetes系统的设计理念
查看>>
两列布局——但只用右浮动
查看>>
GNOME 网页浏览器 Epiphany 将要进行 5 项改进
查看>>
今年CES最大亮点:智能语音助手正成为新趋势
查看>>
Windows Mysql Server重启, log-bin路径配置
查看>>
刘剑锋:友云采助力企业数字化采购的新发展
查看>>
Rainbond 5.0.4 发布,做最好用的云应用操作系统
查看>>
亚马逊宣布与西云数据达成合作,旨在进一步扩大中国业务
查看>>
java nio的基础--缓冲区
查看>>
负载均衡沙龙活动第二期现场问答汇集
查看>>
GBDT原理及利用GBDT构造新的特征-Python实现
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(10)...
查看>>
【Xamarin.Forms】在XAML中传递参数
查看>>
关于数据仓库 — 总体工具介绍
查看>>
最大的错误是不敢犯错
查看>>