用python将XML转换为CSV

2024-10-01 22:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下XML文件需要转换为CSV以进行Magento导入。低于 <values> <Value AttributeID="attributes"></Value>每种产品有几百种不同的可能性。在

我尝试过通过命令行使用xml2csvxmlutils.xml2csv,但没有成功。任何帮助都将不胜感激。在

<?xml version="1.0" encoding="UTF-8" ?>
<STEP-ProductInformation>
  <Products>
    <Product UserTypeID="Item" ParentID="12345678" AnalyzerResult="included" ID="123456">
      <Name>X8MM</Name>
      <ClassificationReference InheritedFrom="" ClassificationID="" AnalyzerResult=""/>
      <Values>
        <Value AttributeID="Retail Price">46.44</Value>
        <Value AttributeID="Item Class">03017</Value>
        <Value AttributeID="Item Group">03</Value>
        <Value AttributeID="Consumer Description">Super-X 8mm Mauser (8x57) 170 Grain Power-Point</Value>
        <Value AttributeID="Quantity Case">10</Value>
        <Value AttributeID="Bullet Weight">170 gr.</Value>
        <Value AttributeID="Made In The USA">Made In The USA</Value>
        <Value AttributeID="Item Code">X8MM</Value>
        <Value AttributeID="Caliber">8x57 Mauser</Value>
        <Value AttributeID="Catalog Vendor Name">WINCHESTER</Value>
        <Value AttributeID="Quantity per Box">20</Value>
        <Value AttributeID="Item Status">OPEN</Value>
        <Value AttributeID="Wildcat Eligible">Y</Value>
        <Value AttributeID="Item Description">WIN SUPX 8MAU 170 PP 20</Value>
        <Value AttributeID="Primary Vendor">307AM</Value>
        <Value AttributeID="Caliber-Gauge">8X57 MAUSER</Value>
        <Value AttributeID="InventoryTyp">REG</Value>
        <Value AttributeID="Bullet Style">Power-Point</Value>
        <Value AttributeID="ProductPageNumber"/>
        <Value AttributeID="Model Header">8mm Mauser (8x57)</Value>
        <Value AttributeID="Master Model Body Copy">Power Point assures quick and massive knock-down. Strategic notching provides consistent and reliable expansion. Contoured jacket maximum expansion performance. Alloyed lead core increases retained weight for deeper penetration.</Value>
        <Value AttributeID="Master Model Header">Super-X Power-Point</Value>
        <Value AttributeID="Vendor Group">WIN</Value>
      </Values>
      <AssetCrossReference Type="Primary Image" AssetID="WIN_X8MM" AnalyzerResult="included"/>
    </Product>
  </Products>
</STEP-ProductInformation>

Tags: namemodelvaluestepitemwinpointvendor
1条回答
网友
1楼 · 发布于 2024-10-01 22:33:23

我不熟悉“Magento”,但这个程序将您的XML文件转换为CSV文件。生成的CSV文件有一列表示Name,每个Value有一列。在

from xml.etree import ElementTree as ET
import csv

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

columns = ['Name'] + [
    value.attrib.get('AttributeID').encode('utf-8')
    for value in tree.findall('.//Product//Value')]

with open('x.csv', 'w') as ofile:
    ofile = csv.DictWriter(ofile, set(columns))
    ofile.writeheader()
    for product in tree.findall('.//Product'):
        d = {value.attrib.get('AttributeID').encode('utf-8'):
             (value.text or '').encode('utf-8')
             for value in product.findall('.//Values/Value')}
        d['Name'] = product.findtext('Name')
        ofile.writerow(d)

相关问题 更多 >

    热门问题