使用python将XML转换为CSV

时间:2016-08-15 16:48:23

标签: python xml csv magento

我有以下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>

1 个答案:

答案 0 :(得分:1)

我不熟悉“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)