|
Hi,
I’m trying to set up a profile to import an XML file from a remote server, so far I have and XML Actions file:
<action type="varien/convert_adapter_io" method="load">
<var name="type">ftp</var>
<var name="path">product_feed.xml</var>
<var name="filename"><![CDATA[product_feed.xml]]></var>
<var name="host"><![CDATA[ftp.server.com]]></var>
<var name="passive">true</var>
<var name="user"><![CDATA[user]]></var>
<var name="password"><![CDATA[password]]></var>
</action>
<action type="varien/convert_parser_xml_product" method="parse">
<var name="single_sheet"><![CDATA[_]]></var>
<var name="fieldnames"></var>
</action>
<action type="varien/convert_mapper_column" method="map">
<var name="sku"><![CDATA[sku]]></var>
</action>
<action type="catalog/convert_parser_product" method="parse">
<var name="store"><![CDATA[0]]></var>
</action>
<action type="catalog/convert_adapter_product" method="save">
<var name="store"><![CDATA[0]]></var>
</action>
The file isn’t an Excel XML file so I have create an XML parser file (unparser is not used for now):
class Varien_Convert_Parser_Xml_Product extends Varien_Convert_Parser_Abstract
{
public function parse()
{
$this->validateDataString();
$dom = new DOMDocument();
$dom->loadXML($this->getData());
$worksheets = $dom->getElementsByTagName(’Products’);
foreach ($worksheets as $worksheet) {
$rows = $worksheet->getElementsByTagName(’Product’);
$firstRow = true;
$fieldNames = array();
$wsData = array();
foreach ($rows as $row) {
$rowData[’sku’] = $row->getElementsByTagName(’sku’)->item(0)->nodeValue;
$rowData[’description’] = $row->getElementsByTagName(’name’)->item(0)->nodeValue;
if (!empty($rowData)) {
$wsData[] = $rowData;
}
}
$data = $wsData;
$this->addException(’Found product with ‘.sizeof($wsData).’ row(s)’);
}
$this->setData($data);
return $this;
}
}
Does this seem correct?
|