Reputation: 57
I have the following XML files that need to be converted to CSV for Magento import. Under
<values> <Value AttributeID="attributes"></Value>
there are a few hundred possibilities that are different for each product.
I've tried using xml2csv
and xmlutils.xml2csv
via command line with no luck. Any help would be appreciated.
<?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>
Upvotes: 0
Views: 5340
Reputation: 168626
I'm not familiar with "Magento", but this program converts your XML file to a CSV file. The resulting CSV file has one column for Name
and one column for each 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)
Upvotes: 1