Can't get value of nodes in XML file with Python

Question:

I’m trying get data for all my rows in xml file, but i get data only for one column when use element_name ‘Data’ in other case i have empty list. Please help.

My code:

import pandas as pd
import xml.etree.ElementTree as ET

ns = {'doc': 'urn:schemas-microsoft-com:office:spreadsheet', 'ss': 'urn:schemas-microsoft-com:office:spreadsheet'}

tree = ET.parse('2307.xml')
root = tree.getroot()


def getvalueofnode(node, element_name):
    """Return text of the element with the given name or None."""
    element = node.find(f'.//doc:{element_name}', ns)
    return element.text if element is not None else ''


def main():
    data = []
    for i, node in enumerate(root.findall('.//doc:Row', ns)):
        if i > 0:  # skip header row
            data.append({
                'Накладная №': getvalueofnode(node, 'Data'),
                'Время изготовления замеса': getvalueofnode(node, 'Время изготовления замеса'),
                'Опознавание рецепта': getvalueofnode(node, 'Опознавание рецепта')
            })
    return pd.DataFrame(data)


df = main()
print(df)

My Output:

Накладная № Время изготовления замеса Опознавание рецепта

0 1023972
1 1023972
2 1023972
3 1023972
4 1023973
5 1023973
6 1023974
7 1023975
8 1023975
9 1023975
10 1023975
11 1023975
12 1023975
13 1023975
14 1023976

Part of XML data:

    <?xml version="1.0" encoding="UTF-8"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns_ss="urn:schemas-microsoft-com:office:spreadsheet"><DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Keywords>Version 1.0</Keywords></DocumentProperties><Styles><Style ss_ID="s22"><NumberFormat ss_Format="General Date"/></Style><Style ss_ID="s63"><Alignment ss_Vertical="Bottom" ss_Rotate="90"/></Style></Styles><Worksheet ss_Name="Порционный режим"><Table><Row ss_Index="1"><Cell ss_Index="1" ss_StyleID="s63"><Data ss_Type="String">Накладная №</Data></Cell><Cell ss_Index="2" ss_StyleID="s63"><Data ss_Type="String">Время изготовления замеса</Data></Cell><Cell ss_Index="3" ss_StyleID="s63"><Data ss_Type="String">Опознавание рецепта</Data></Cell><Cell ss_Index="4" ss_StyleID="s63"><Data ss_Type="String">Имя рецепта</Data></Cell><Cell ss_Index="5" ss_StyleID="s63"><Data ss_Type="String">Категория рецепта</Data></Cell><Cell ss_Index="6" ss_StyleID="s63"><Data ss_Type="String">Номер замеса</Data></Cell><Cell ss_Index="7" ss_StyleID="s63"><Data ss_Type="String">Бункер отгрузки</Data></Cell><Cell ss_Index="8" ss_StyleID="s63"><Data ss_Type="String">Время смешивания</Data></Cell><Cell ss_Index="9" ss_StyleID="s63"><Data ss_Type="String">Кол-во продукции</Data></Cell><Cell ss_Index="10" ss_StyleID="s63"><Data ss_Type="String">Рецепт изменён</Data></Cell><Cell ss_Index="11" ss_StyleID="s63"><Data ss_Type="String">Взятие пробы</Data></Cell><Cell ss_Index="12" ss_StyleID="s63"><Data ss_Type="String">Пенный битум</Data></Cell><Cell ss_Index="13" ss_StyleID="s63"><Data ss_Type="String">Температура смеси Надо</Data></Cell><Cell ss_Index="14" ss_StyleID="s63"><Data ss_Type="String">Температура смеси Надо единица</Data></Cell><Cell ss_Index="15" ss_StyleID="s63"><Data ss_Type="String">Температура смеси Есть</Data></Cell><Cell ss_Index="16" ss_StyleID="s63"><Data ss_Type="String">Температура смеси Есть единица</Data></Cell><Cell ss_Index="17" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="18" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="19" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="20" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="21" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="22" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="23" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="24" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="25" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="26" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Дозацию продолжить</Data></Cell><Cell ss_Index="27" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="28" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Температура компонента</Data></Cell><Cell ss_Index="29" ss_StyleID="s63"><Data ss_Type="String">Bit 1 (AB01)@Температура компонента единица</Data></Cell><Cell ss_Index="30" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="31" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="32" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="33" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="34" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="35" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="36" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="37" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="38" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="39" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Дозацию продолжить</Data></Cell><Cell ss_Index="40" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="41" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Температура компонента</Data></Cell><Cell ss_Index="42" ss_StyleID="s63"><Data ss_Type="String">Пыль (AEF01)@Температура компонента единица</Data></Cell><Cell ss_Index="43" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="44" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="45" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="46" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="47" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="48" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="49" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="50" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="51" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="52" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Дозацию продолжить</Data></Cell><Cell ss_Index="53" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="54" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Температура компонента</Data></Cell><Cell ss_Index="55" ss_StyleID="s63"><Data ss_Type="String">Минеральный порошок (AFF01)@Температура компонента единица</Data></Cell><Cell ss_Index="56" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="57" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="58" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="59" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="60" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="61" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="62" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="63" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="64" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="65" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Дозацию продолжить</Data></Cell><Cell ss_Index="66" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="67" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Температура компонента</Data></Cell><Cell ss_Index="68" ss_StyleID="s63"><Data ss_Type="String">Bypass (AM01)@Температура компонента единица</Data></Cell><Cell ss_Index="69" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="70" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="71" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="72" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="73" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="74" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="75" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="76" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="77" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="78" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Дозацию продолжить</Data></Cell><Cell ss_Index="79" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="80" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Температура компонента</Data></Cell><Cell ss_Index="81" ss_StyleID="s63"><Data ss_Type="String">0-5 (AM02)@Температура компонента единица</Data></Cell><Cell ss_Index="82" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="83" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="84" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="85" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="86" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="87" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="88" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="89" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="90" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="91" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Дозацию продолжить</Data></Cell><Cell ss_Index="92" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="93" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Температура компонента</Data></Cell><Cell ss_Index="94" ss_StyleID="s63"><Data ss_Type="String">5-10 (AM03)@Температура компонента единица</Data></Cell><Cell ss_Index="95" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="96" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="97" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="98" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="99" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="100" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="101" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="102" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="103" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="104" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Дозацию продолжить</Data></Cell><Cell ss_Index="105" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="106" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Температура компонента</Data></Cell><Cell ss_Index="107" ss_StyleID="s63"><Data ss_Type="String">10-15 (AM04)@Температура компонента единица</Data></Cell><Cell ss_Index="108" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="109" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="110" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="111" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="112" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="113" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="114" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="115" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="116" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="117" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Дозацию продолжить</Data></Cell><Cell ss_Index="118" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="119" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Температура компонента</Data></Cell><Cell ss_Index="120" ss_StyleID="s63"><Data ss_Type="String">15-20 (AM05)@Температура компонента единица</Data></Cell><Cell ss_Index="121" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Кол-во компонента Надо</Data></Cell><Cell ss_Index="122" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Кол-во компонента Надо единица</Data></Cell><Cell ss_Index="123" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Компоненты без засчёта Надо</Data></Cell><Cell ss_Index="124" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Кол-во компонента Есть</Data></Cell><Cell ss_Index="125" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Кол-во компонента Есть единица</Data></Cell><Cell ss_Index="126" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Компоненты без засчёта Есть</Data></Cell><Cell ss_Index="127" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Ручное вмешательство при работе</Data></Cell><Cell ss_Index="128" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Допуск при дозации акцептирован</Data></Cell><Cell ss_Index="129" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Автоматическая коррекция заданного значения</Data></Cell><Cell ss_Index="130" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Дозацию продолжить</Data></Cell><Cell ss_Index="131" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Синхронизация с последующей фазой</Data></Cell><Cell ss_Index="132" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Температура компонента</Data></Cell><Cell ss_Index="133" ss_StyleID="s63"><Data ss_Type="String">20-40 (AM06)@Температура компонента единица</Data></Cell></Row><Row ss_Index="2"><Cell ss_Index="1"><Data ss_Type="String">1023972</Data></Cell><Cell ss_Index="2" ss_StyleID="s22"><Data ss_Type="DateTime">2022-07-23T09:06:06.813</Data></Cell><Cell ss_Index="3"><Data ss_Type="String">В-10.</Data></Cell><Cell ss_Index="4"><Data ss_Type="String">В-10.</Data></Cell><Cell ss_Index="6"><Data ss_Type="Number">1</Data></Cell><Cell ss_Index="7"><Data ss_Type="String">1. Silo</Data></Cell><Cell ss_Index="8"><Data ss_Type="Number">30</Data></Cell><Cell ss_Index="9"><Data ss_Type="Number">3.02739</Data></Cell><Cell ss_Index="10"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="11"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="12"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="13"><Data ss_Type="Number">50</Data></Cell><Cell ss_Index="14"><Data ss_Type="String">°C</Data></Cell><Cell ss_Index="15"><Data ss_Type="Number">161.105</Data></Cell><Cell ss_Index="16"><Data ss_Type="String">°C</Data></Cell><Cell ss_Index="17"><Data ss_Type="Number">189.1</Data></Cell><Cell ss_Index="18"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="19"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="20"><Data ss_Type="Number">187.599</Data></Cell><Cell ss_Index="21"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="22"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="23"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="24"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="25"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="26"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="27"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="28"><Data ss_Type="Number">160.852</Data></Cell><Cell ss_Index="29"><Data ss_Type="String">°C</Data></Cell><Cell ss_Index="30"><Data ss_Type="Number">91.5</Data></Cell><Cell ss_Index="31"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="32"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="33"><Data ss_Type="Number">86.3552</Data></Cell><Cell ss_Index="34"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="35"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="36"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="37"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="38"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="39"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="40"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="43"><Data ss_Type="Number">91.5</Data></Cell><Cell ss_Index="44"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="45"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="46"><Data ss_Type="Number">89.5425</Data></Cell><Cell ss_Index="47"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="48"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="49"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="50"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="51"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="52"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="53"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="69"><Data ss_Type="Number">1811.7</Data></Cell><Cell ss_Index="70"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="71"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="72"><Data ss_Type="Number">1791.45</Data></Cell><Cell ss_Index="73"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="74"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="75"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="76"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="77"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="78"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="79"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="80"><Data ss_Type="Number">65.955</Data></Cell><Cell ss_Index="81"><Data ss_Type="String">°C</Data></Cell><Cell ss_Index="82"><Data ss_Type="Number">866.2</Data></Cell><Cell ss_Index="83"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="84"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="85"><Data ss_Type="Number">872.447</Data></Cell><Cell ss_Index="86"><Data ss_Type="String">kg</Data></Cell><Cell ss_Index="87"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="88"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="89"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="90"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="91"><Data ss_Type="Number">0</Data></Cell><Cell ss_Index="92"><Data ss_Type="Number">0</Data></Cell></Row></Table></Worksheet></Workbook>
Asked By: Eugen Kuzmych

||

Answers:

If you use read_xml() from pandas with the path like:

import pandas as ET
df = pd.read_xml(xml, xpath=(".//ns0:Cell"), namespaces={"ns0":"urn:schemas-microsoft-com:office:spreadsheet"})
print(df)

Gives you this output:


    Index StyleID                                 Data
0       1     s63                          Накладная №
1       2     s63            Время изготовления замеса
2       3     s63                  Опознавание рецепта
3       4     s63                          Имя рецепта
4       5     s63                    Категория рецепта
5       6     s63                         Номер замеса
6       7     s63                      Бункер отгрузки
7       8     s63                     Время смешивания
8       9     s63                     Кол-во продукции
9      10     s63                       Рецепт изменён
10     11     s63                         Взятие пробы
11     12     s63                         Пенный битум
12     13     s63               Температура смеси Надо
13     14     s63       Температура смеси Надо единица
14     15     s63               Температура смеси Есть
15     16     s63       Температура смеси Есть единица
16     17     s63  Bit 1 (AB01)@Кол-во компонента Надо

Answered By: Hermann12

Thanks for trying to help. I found a solution to the task that works for me. In my solution task, I first find the column indexes def find_cell_indexes(xml_file_path, row_index, column_names): that I am interested in in the list (sometimes they may or may not be in the XML file). And finally, def getvalueofnode(node):. Sorry for the russian language in the code, unfortunately it is in the XML file

import xml.etree.ElementTree as ET
import pandas as pd


def find_cell_indexes(xml_file_path, row_index, column_names):
    # Parse the XML file and get the root element
    tree = ET.parse(xml_file_path)
    root = tree.getroot()

    # Define the namespaces used in the XML file
    ns = {'doc': 'urn:schemas-microsoft-com:office:spreadsheet',
          'ss': 'urn:schemas-microsoft-com:office:spreadsheet'}

    # Find the row element with the specified index
    row_element = root.find(f'.//doc:Row[@ss:Index="{row_index}"]', ns)

    if row_element is not None:
        # Find the cell elements in the row that correspond to the specified column names
        indexes = []
        for column_name in column_names:
            found_column = False
            for cell_element in row_element.findall('.//doc:Cell', ns):
                cell_data_element = cell_element.find('.//doc:Data', ns)
                if cell_data_element.text == column_name:
                    cell_items = cell_element.items()
                    indexes.append(cell_items[0][1])
                    found_column = True
                    break
            if not found_column:
                indexes.append('')
        return indexes

    # If the row is not found, return an empty list
    return []


xml_file_path = '2307.xml'
row_index = 1  # Assuming the header row is the first row
column_names = ['Накладная №', 'Время изготовления замеса', 'Имя рецепта', 'Кол- во продукции',
                'Bit 1 (AB01)@Кол-во компонента Есть', 'Bitumen pipe']
cell_indexes = find_cell_indexes(xml_file_path, row_index, column_names)

print(cell_indexes)  # Output: [1, 2]

ns = {"doc": "urn:schemas-microsoft-com:office:spreadsheet", "ss": "urn:schemas-microsoft-com:office:spreadsheet"}
tree = ET.parse("2307.xml")
root = tree.getroot()


def getvalueofnode(node):
    """ return node text or None """
    return node.text if node is not None else ''


def main():
    data = []
    for i, node in enumerate(root.findall('.//doc:Row', ns)):
        if i > 0:
            data.append({'doc_num': getvalueofnode(node.find(f'doc:Cell[@ss:Index="{cell_indexes[0]}"]/doc:Data', ns)),
                         'time_prod': getvalueofnode(
                             node.find(f'doc:Cell[@ss:Index="{cell_indexes[1]}"]/doc:Data', ns)),
                         'idr': getvalueofnode(node.find(f'doc:Cell[@ss:Index="{cell_indexes[2]}"]/doc:Data', ns)),
                         'qtty': getvalueofnode(node.find(f'doc:Cell[@ss:Index="{cell_indexes[3]}"]/doc:Data', ns)),
                         'bitum': getvalueofnode(node.find(f'doc:Cell[@ss:Index="{cell_indexes[4]}"]/doc:Data', ns)),
                         'Bitumen pipe': getvalueofnode(
                             node.find(f'doc:Cell[@ss:Index="{cell_indexes[5]}"]/doc:Data', ns)),
                         })
    return pd.DataFrame(data)


df = main()

print(df)

Result:

[‘1’, ‘2’, ‘4’, ‘9’, ’20’, ”]

doc_num                time_prod    idr     qtty    bitum Bitumen pipe

0 1023972 2022-07-23T09:06:06.813 В-10. 3.02739 187.599
1 1023972 2022-07-23T09:06:59.747 В-10. 3.08288 189.614
2 1023972 2022-07-23T09:07:41.120 В-10. 1.93264 119.995
3 1023972 2022-07-23T09:08:20.410 В-10. 1.97369 120.898
4 1023973 2022-07-23T09:09:24.397 В-10. 1.7387 109.418
5 1023973 2022-07-23T09:10:03.280 В-10. 1.7441 110.787
6 1023974 2022-07-23T09:11:40.593 КЗ-10 2.03064 97.3793
7 1023975 2022-07-23T09:12:32.547 В-10. 3.08609 190.498
8 1023975 2022-07-23T09:13:22.643 В-10. 3.06997 190.194
9 1023975 2022-07-23T09:14:21.627 В-10. 3.05432 190.947
10 1023975 2022-07-23T09:15:34.983 В-10. 3.03267 190.264
11 1023975 2022-07-23T09:16:46.077 В-10. 3.03047 191.279
12 1023975 2022-07-23T09:17:30.267 В-10. 2.3624 147.301
13 1023975 2022-07-23T09:18:23.987 В-10. 2.36726 147.873
14 1023976 2022-07-23T09:21:04.580 В-10. 3.05764 190.259
15 1023976 2022-07-23T09:21:49.820 В-10. 3.05276 190.801
16 1023976 2022-07-23T09:22:36.020 В-10. 3.04138 190.861
17 1023976 2022-07-23T09:23:21.063 В-10. 3.04716 190.194
18 1023976 2022-07-23T09:24:09.067 В-10. 3.07738 190.696
19 1023976 2022-07-23T09:25:08.350 В-10. 3.06708 190.381
20 1023976 2022-07-23T09:26:20.810 В-10. 3.05788 190.06
21 1023976 2022-07-23T09:27:25.423 В-10. 3.04395 189.959
22 1023976 2022-07-23T09:28:27.750 В-10. 2.78911 174.02
23 1023976 2022-07-23T09:29:54.223 В-10. 2.78346 173.047
24 1023977 2022-07-23T10:02:13.430 В-10. 3.04915 190.329
25 1023977 2022-07-23T10:02:53.953 В-10. 1.98642 122.926
26 1023977 2022-07-23T10:03:30.620 В-10. 1.96784 122.874
27 1023978 2022-07-23T10:48:47.767 В-10. 3.03407 189.892
28 1023978 2022-07-23T10:49:38.930 В-10. 3.06354 190.861
29 1023978 2022-07-23T10:51:23.293 В-10. 1.94399 122.194
30 1023978 2022-07-23T10:52:00.743 В-10. 1.96193 122.483
31 1023979 2022-07-23T10:54:21.910 В-10. 2.49058 155.521
32 1023979 2022-07-23T10:55:00.860 В-10. 2.50879 155.907
33 1023980 2022-07-23T11:21:05.890 В-10. 2.50959 156.563
34 1023980 2022-07-23T11:24:50.700 В-10. 2.5009 154.343
35 1023981 2022-07-23T11:37:20.167 В-10. 2.5077 156.348
36 1023981 2022-07-23T11:39:35.803 В-10. 2.50112 154.129

Answered By: Eugen Kuzmych
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.