一、XML简介
可扩展标记语言(Extensible Markup Language),简称XML。是一种用于标记电子文件使其具有结构性的标记语言。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但大部分都支持XML,那就意味着程序可以更容易的与Windows、Mac OS、Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析它,并以XML格式输出结果。
二、XML格式
1.xml只能有一个根级元素,不能有多个根级元素,例如在格式2中再添加一个根级元素<config1></config1>,就会报错。
2.xml的元素可以循环嵌套,父级元素包含子级元素,子级元素有可以包含自己的子级元素,
例如格式1:根级元素<CATALOG></CATALOG>包含了子级元素<CD></CD>,而<CD></CD>子级元素又可以包含多个自己的子级元素。
3.元素的两中形式:
形式1<节点名称>[值]</节点名称>如:<title>文章标题</title>
形式2<节点名称 属性1=[值] 属性2=[值] 属性3=[值]
…
属性N=[值]/>
例如:
<row col1="11" col2="一(一)班" col3="初一" col4="三峡高级中学" col5="20" col6="30" col7="50"/>
三、代码实例
from xml.etree import ElementTree as ET
import xlwt
#提取元素数据
def parseXml():
name_list = [] #站点名称列表
code_list = [] #站点代码列表
pointes = [] #站点名称和代码列表
#打开文件
dom = ET.parse("C:/Users/2222222/Downloads/EQPIdMap.xml")
#文档根元素
root = dom.getroot()
# for child in root:
# print(child.tag, child.attrib)
# print(root.tag)
#获取MESEQPID标签列表
for EQPID in root.findall("EQPID"):
MESEQ = EQPID.find('MESEQ')
# print(MESEQ.text)
meseqp_list.append(MESEQ.text)#加入列表
#获取BCEQPID标签列表
for EQPID in root.findall("EQPID"):
BCEQ = EQPID.find('BCEQ')
# print(BCEQ.text)
code_list.append(BCEQ.text)#加入列表
pointes.append(name_list)
pointes.append(code_list)
print(pointes)
return pointes
#写入excel
def save_excel(file_path,datas):
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
r = 0 #行
c = 0 #列
for data in datas:
for c in range(len(data)):
sheet1.write(c,r,data[c])
r = r + 1
f.save(file_path)
if __name__ == '__main__':
listdemo = parseXml()
print(listdemo)
save_excel("C:/Users/2222222/Downloads/aaa.xls",listdemo)
# xlwt 仅支持 xls 格式文件,导出时注意后缀为.xls
输入:
参考链接:
xml的文件格式有几种 – 风纳云
[db:描述]
https://www.fengnayun.com/news/content/111715.html
python 解析xml文件写入excel_python 解析xml excel_垢浪_明珠的博客-CSDN博客
本文目的是用python的ElementTree和xlwt解析xml文件并写入excel,在网上和官网看了一些示例,都是一些基本用法,简单例子,个人觉得不够实用,所以整理了此篇博客,把xml文件中的城市环境监测站点名称和代码,将数据提取保存到excel中。废话不多说直接上代码1.需要解析的datas.xml文件,由于文件内容比较多,所以只截取部分,需要提取的内容为Pointe…
https://blog.csdn.net/yht2004123/article/details/105290004