Создание вспомогательных таблиц в листе Excel из xml с использованием дерева элементов python

<?xml version="1.0" encoding="UTF-8"?> -<Metrics> -<File name="N:/Users/Source/Callbacks.c"> -<Entity name="N:/Users/Source/CAN_Callbacks.c" type="file"> <Metric name="STTDE" value="2.205"/> <Metric name="STM28" value="27"/> <Metric name="STTDO" value="1.999"/> </Entity> -<Entity name="ApplNwmBusoff" type="function"> <Metric name="STM07" value="1"/> <Metric name="STUNV" value="1"/> <Metric name="STSUB" value="1"/> </Entity> </File> </Metrics> 

Это xml-код. Я хочу создать субтитры в листе Excel следующим образом:

введите описание изображения здесь

  • Python и ElementTree: возвращает «внутренний XML», исключая родительский элемент
  • Как удалить узел в xml с помощью ElementTree в Python?
  • Как вставить пространство имен и префиксы в строку XML с помощью Python?
  • Объединить файлы xml с вложенными элементами без внешних библиотек
  • Как использовать пространства имен xml с find / findall в lxml?
  • Удаление пробелов в строке XML
  • Это мой код:

     import os import xml.etree.ElementTree as ET import pandas as pd dir = r"C:\Users\HIL Tester\projt\prqa\reports\projt_MDR_13062017_112431.xml" file_name = [] metric_name = [] metric_value = [] table_end_indices = [] metric_name_lists = [] metric_value_lists = [] main_list = [] tree = ET.parse(dir) root = tree.getroot() for child in root[0].iter('Entity'): file_name.append(child.get('name')) for table_ind in range(len(root[0])): for c in root[0][table_ind].iter('Metric'): metric_name.append(c.get('name'))#all the headers are appended to metric name list metric_value.append(c.get('value'))#all the values are appended to metric value list data_frame1 = pd.DataFrame(file_name) data_frame2 = pd.DataFrame(metric_name) data_frame3 = pd.DataFrame(metric_value) frames = [data_frame1, data_frame2, data_frame3] result = pd.concat(frames) result=result.transpose() writer = pd.ExcelWriter(r'N:\Users\xml\report.xlsx') result.to_excel(writer, 'xml_report') writer.save() 

    Но этот код генерирует таблицу в этом формате. Я хочу создать таблицы в вышеупомянутом формате. Может кто-то мне помочь, пожалуйста?

    введите описание изображения здесь

  • Разбирайте XML с (X) объектами HTML
  • как сделать 1 по n dataframe из серии в пандах?
  • Заполните Pandas SparseDataFrame из SciPy Sparse Coo Matrix
  • Pandas count (отдельный) эквивалент
  • Подсчитайте количество строк между двумя датами BY ID в кадре данных Pandas GroupBy
  • Значение истины серии неоднозначно. Используйте команды a.empty, a.bool (), a.item (), a.any () или a.all ()
  • One Solution collect form web for “Создание вспомогательных таблиц в листе Excel из xml с использованием дерева элементов python”

    Решение с использованием openpyxl , например:

     from openpyxl import Workbook wb = Workbook() ws = wb.worksheets[0] ws.title = 'xml_report' tree = ET.parse(xml) root = tree.getroot() for entity in root[0].iter('Entity'): subtable_header = [] subtable_header.append(entity.get('name')) subtable_values = [''] for metric in entity.iter('Metric'): subtable_header.append(metric.get('name')) subtable_values.append(metric.get('value')) ws.append(subtable_header) ws.append(subtable_values) wb.save('N:\Users\xml\report.xlsx') 

    Выход :

    Протестировано с помощью Python: 3.4.2 – openpyxl: 2.4.1 – LibreOffice: 4.3.3.2

    Python - лучший язык программирования в мире.