我有一个包含在产品中的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
答案 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;
}
要恢复: