You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用xml.etree.ElementTree将XML文件中的ItemDescription元素转换为Pandas DataFrame

用xml.etree.ElementTree提取XML属性并转换为Pandas DataFrame的解决方案

完全没问题,咱们用Python自带的xml.etree.ElementTree就能轻松搞定这个需求,不需要额外安装任何第三方库。下面是具体的实现步骤和代码:

核心思路

  1. 解析XML文件/内容,定位到所有<ItemDescription>元素
  2. 提取每个元素的属性(Color、ID、Letter等),将这些属性整理成字典列表
  3. 直接用Pandas将字典列表转换为DataFrame

完整代码示例

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

# 情况1:如果你的XML是本地文件,用下面两行解析
# tree = ET.parse('your_order_file.xml')
# root = tree.getroot()

# 情况2:如果XML是字符串形式(比如你提供的示例内容),用这个解析
xml_content = '''<?xml version="1.0" ?>
<OrderList>
  <ItemDescriptions>
    <ItemDescription Color="rosybrown" ID="0" Letter="a" Type="Letter" Weight="1.67"/>
    <ItemDescription Color="lightcoral" ID="1" Letter="a" Type="Letter" Weight="0.91"/>
    <ItemDescription Color="indiaread" ID="2" Letter="a" Type="Letter" Weight="0.62"/>
    <ItemDescription Color="brown" ID="3" Letter="a" Type="Letter" Weight="2.92"/>
    <ItemDescription Color="firedbrick" ID="4" Letter="a" Type="Letter" Weight="2.34"/>
    <ItemDescription Color="maroon" ID="5" Letter="a" Type="Letter" Weight="0.53"/>
    <ItemDescription Color="darkred" ID="6" Letter="a" Type="Letter" Weight="2.72"/>
  </ItemDescriptions>
  <ItemBundles/>
  <Orders>
    <Order TimeStamp="">
      <Positions>
        <Position Count="1" ItemDescriptionID="9"/>
        <Position Count="1" ItemDescriptionID="18"/>
      </Positions>
    </Order>
    <Order TimeStamp="">
      <Positions>
        <Position Count="2" ItemDescriptionID="9"/>
        <Position Count="1" ItemDescriptionID="12"/>
        <Position Count="2" ItemDescriptionID="14"/>
        <Position Count="1" ItemDescriptionID="18"/>
        <Position Count="1" ItemDescriptionID="16"/>
      </Positions>
    </Order>
  </Orders>
</OrderList>'''

root = ET.fromstring(xml_content)

# 用XPath定位所有ItemDescription元素,不管它们在XML的哪个层级
item_descriptions = root.findall('.//ItemDescription')

# 提取每个元素的属性,生成字典列表
item_data = [item.attrib for item in item_descriptions]

# 转换为Pandas DataFrame
df = pd.DataFrame(item_data)

# 如果你需要指定列的顺序,可以手动指定:
# df = pd.DataFrame(item_data, columns=['Color', 'ID', 'Letter', 'Type', 'Weight'])

# 查看结果
print(df)

关键细节说明

  • root.findall('.//ItemDescription'):这里用了XPath表达式//,它会遍历XML的所有层级,找到所有匹配的<ItemDescription>元素,不用你手动一层层找父节点(比如先找<ItemDescriptions>再找子元素),非常方便。
  • item.attrib:每个XML元素的attrib属性会返回一个字典,包含该元素的所有属性和对应值,正好符合Pandas DataFrame的输入要求。
  • 这个方法完全依赖Python标准库和Pandas,不需要额外安装任何工具,符合你的需求。

运行这段代码后,你会得到一个包含Color、ID、Letter、Type、Weight列的DataFrame,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者lonyen11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:12:45