Преобразование XML в список таблиц: несколько методов и примеры кода

XML (расширяемый язык разметки) — популярный формат хранения и обмена данными. Однако бывают ситуации, когда возникает необходимость преобразовать данные XML в более структурированный формат, например в список таблиц. В этой статье мы рассмотрим различные методы выполнения этой задачи на примерах кода.

Метод 1: использование Python xml.etree.ElementTree
Пример кода:

import xml.etree.ElementTree as ET
import pandas as pd
def xml_to_table(xml_string):
    root = ET.fromstring(xml_string)
    data = []
    for child in root:
        row = {}
        for item in child:
            row[item.tag] = item.text
        data.append(row)
    df = pd.DataFrame(data)
    return df
# Usage
xml_data = """<data>
    <item>
        <name>John</name>
        <age>25</age>
    </item>
    <item>
        <name>Jane</name>
        <age>30</age>
    </item>
</data>"""
table_data = xml_to_table(xml_data)
print(table_data)

Метод 2: использование XSLT (преобразования расширяемого языка таблиц стилей)
Пример кода:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="/">
        <xsl:for-each select="data/item">
            <xsl:value-of select="name"/>
            <xsl:text>,</xsl:text>
            <xsl:value-of select="age"/>
            <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Сохраните приведенный выше код XSLT в файле с именем «xml_to_table.xslt» и используйте процессор XSLT для преобразования данных XML.

Метод 3: использование Java и DOM (объектная модель документа)
Пример кода:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLParser {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("input.xml");
            document.getDocumentElement().normalize();
            NodeList nodeList = document.getElementsByTagName("item");
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    System.out.println("Name: " + element.getElementsByTagName("name").item(0).getTextContent());
                    System.out.println("Age: " + element.getElementsByTagName("age").item(0).getTextContent());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Преобразование данных XML в формат списка таблиц является распространенным требованием в задачах обработки данных. В этой статье мы рассмотрели три различных метода достижения этой цели: использование Python xml.etree.ElementTree, преобразований XSLT и Java DOM API. Каждый метод имеет свои преимущества и может быть выбран исходя из конкретных требований. Понимая эти методы и используя предоставленные примеры кода, вы сможете эффективно преобразовывать данные XML в формат списка таблиц для дальнейшей обработки.

Не забудьте выбрать метод, который лучше всего соответствует потребностям вашего проекта, и следуйте соответствующим практикам SEO при публикации статьи.