将自定义xml文件导入magento

时间:2010-11-30 17:38:34

标签: xml magento

我有一个包含在产品中的xml文件。 文件的结构:

<?xml version="1.0" encoding="iso-8859-2"?>
  <service >
   <product id="2476" sku="SA 177-2" category="51" visible="1" >
     <title><![CDATA[Fedde Le Grand - OUTPUT]]></title>
     <short><![CDATA[Fedde Le Grand presents OUTPUT...]]</short>
     <long />
     <category><![CDATA[elektronika/dance/ambient]]></category>
     <price>1600</price>
     <vat>25</vat>
     <image>200909/92917a17f143088ce219_20090907.jpg</image>
     <actor><![CDATA[Fedde le Grand]]></actor>
     <album><![CDATA[Output]]></album>
     <label><![CDATA[CLS]]></label>
     <type><![CDATA[Audio CD]]></type>
   </product>
  </service>

我想使用magento的导入系统,但它不起作用。我在Profile Actions XML中设置了地图。这个文件的结构:

<action type="dataflow/convert_parser_xml_excel" method="parse">
    <var name="single_sheet"><![CDATA[]]></var>
    <var name="fieldnames"></var>
    <var name="map">
        <map name="product_category"><![CDATA[category_ids]]></map>
        <map name="product_sku"><![CDATA[sku]]></map>
        <map name="title"><![CDATA[name]]></map>
        <map name="short"><![CDATA[short_description]]></map>
        <map name="long"><![CDATA[description]]></map>
        <map name="price"><![CDATA[price]]></map>
        <map name="vat"><![CDATA[tax_class_id]]></map>
        <map name="image"><![CDATA[image]]></map>
        <map name="actor"><![CDATA[meta_description]]></map>
        <map name="album"><![CDATA[meta_title]]></map>
        <map name="label"><![CDATA[meta_keyword]]></map>
        <map name="type"><![CDATA[samples_title]]></map>
    </var>
    <var name="store"><![CDATA[0]]></var>
    <var name="number_of_records">1</var>
    <var name="decimal_separator"><![CDATA[.]]></var>
    <var name="adapter">catalog/convert_adapter_product</var>
    <var name="method">parse</var>
</action>

.result是FOUND 0 ROWS,所以失败了。有人可以帮帮我吗?我不明白这个问题。 问候,Roland Dercsenyi

1 个答案:

答案 0 :(得分:1)

您必须编写自己的解析器类,然后使用高级配置文件。 convert_parser_xml_excel需要excel xml格式的文件。 如果你看一下Mage_Dataflow_Model_Convert_Parser_Xml_Excel :: parse()函数,你会发现它需要一个不同于你的xml格式。

//excerpt from Mage_Dataflow_Model_Convert_Parser_Xml_Excel::parse()
    $worksheet = $this->getVar('single_sheet', '');

            $xmlString = $xmlRowString = '';
            $countRows = 0;
            $isWorksheet = $isRow = false;
            while (($xmlOriginalString = $batchIoAdapter->read()) !== false) {
                $xmlString .= $xmlOriginalString;
                if (!$isWorksheet) {
                    $strposS = strpos($xmlString, '<Worksheet');
                    $substrL = 10;
                    //fix for OpenOffice
                    if ($strposS === false) {
                        $strposS = strpos($xmlString, '<ss:Worksheet');
                        $substrL = 13;
                    }

要恢复:

  1. 您必须使用高级配置文件并编写自己的解析器功能
  2. 使用xml导入配置文件作为基础并使用Mage_Dataflow_Model_Convert_Parser_Xml_Excel作为演示编写您自己的类和解析函数