常见的xml编程接口有Dom和SAX,这两种接口处理xml文件袋方式不同,使用的场合也不相同
Dom(Document object mode)
将xml数据在内存中解析成一个树,通过对树的操作来操作xml
import xml.dom.minidom
import pandas as pd
import openpyxl
import os
import xlsxwriter
import time
def xml_parse(xml_path, excel_path):
# 打开xml文件,并将这个文件对象存入dom变量
dom = xml.dom.minidom.parse(xml_path)
# 得到文档元素对象
root = dom.documentElement # 用于得到dom对象的文档元素,并把获得的对象给root
# 获得标签为entry多组标签
entry_tag = dom.getElementsByTagName('node')
# 如果没有Excel文件(第一次运行),则创建
if (not os.path.isfile(excel_path)):
wbo0k = xlsxwriter.Workbook(excel_path)
wbo0k.add_worksheet()
wbo0k.close()
workbook = openpyxl.load_workbook(excel_path)
worksheet = workbook.active
worksheet.cell(1, 1).value = 'num'
worksheet.cell(1, 2).value = 'node_bounds'
worksheet.cell(1, 3).value = 'resource_id'
worksheet.cell(1, 4).value = 'text'
workbook.save(r"C:UsersAdministratorDesktoptext.xlsx")
# 读取Excel表
workbook = openpyxl.load_workbook(excel_path)
worksheet = workbook.active
# worksheet = workbook.worksheets[0]
# 定位到表格的最后一行
curentRow = worksheet.max_row + 1
print(curentRow)
# #写入Excel表格中
worksheet.cell(curentRow,1,' ')
for i in range(0, 100):
try:
date1 = entry_tag[i]
node_bounds = date1.getAttribute('bounds')
print(node_bounds)
resource_id = date1.getAttribute('resource-id')
print(resource_id)
text = date1.getAttribute('text')
print(text)
print('*******************')
# workbook = openpyxl.load_workbook(r"C:UsersAdministratorDesktoptext.xlsx", data_only=True)
# worksheet = workbook.worksheets[0]
worksheet.cell(curentRow + i+1, 1).value = curentRow + i - 1
worksheet.cell(curentRow + i+1, 2).value = node_bounds # 写入一个值,括号内分别为行数、列数、内容
worksheet.cell(curentRow + i+1, 3).value = resource_id
worksheet.cell(curentRow + i+1, 4).value = text
except IndexError:
break
workbook.save(excel_path)
if __name__=='__main__':
xml_path=r"C:UsersAdministratorDesktopui.xml"
excel_path=r"C:UsersAdministratorDesktoptext.xlsx"
xml_parse(xml_path, excel_path)
运行结果:
D:Python3.8.6python.exe D:/PythonWorkSpace/chenbang/xml_parse.py 2 [0,0][1920,720] ******************* [0,0][1920,720] ******************* [0,0][1920,720] android:id/content ******************* [0,0][1920,720] ******************* [0,0][1920,720] com.hsae.d531mc.launcher:id/viewPager ******************* [0,0][1920,720] ******************* [0,80][1920,720] ******************* [0,80][384,400] com.hsae.d531mc.launcher:id/tv_icon1 音乐 ******************* [384,80][768,400] com.hsae.d531mc.launcher:id/tv_icon2 收音 ******************* [768,80][1152,400] com.hsae.d531mc.launcher:id/tv_icon3 电话 ******************* [1152,80][1536,400] com.hsae.d531mc.launcher:id/tv_icon4 空调 ******************* [1536,80][1920,400] com.hsae.d531mc.launcher:id/tv_icon5 在线 ******************* [0,400][384,720] com.hsae.d531mc.launcher:id/tv_icon6 智联 ******************* [384,400][768,720] com.hsae.d531mc.launcher:id/tv_icon7 影像 ******************* [768,400][1152,720] com.hsae.d531mc.launcher:id/tv_icon8 设置 ******************* [1152,400][1536,720] com.hsae.d531mc.launcher:id/tv_icon9 车辆 ******************* [1536,400][1920,720] com.hsae.d531mc.launcher:id/tv_icon10 语音 ******************* [0,0][1920,80] ******************* [918,34][930,46] com.hsae.d531mc.launcher:id/iv_arrow1 ******************* [990,34][1002,46] com.hsae.d531mc.launcher:id/iv_arrow2 ******************* Process finished with exit code 0
我的xml文件
xml文件链接:https://download.csdn.net/download/qq_42069296/85813680
解析后记录到excel的效果



