将自定义 xml 文件导入到 magento

发布于 2024-10-05 09:31:06 字数 2464 浏览 1 评论 0原文

我有一个包含在产品中的 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的导入系统,但它不起作用。我在配置文件操作 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 is FOUND 0 ROWS,因此失败。有人可以帮助我吗?我不明白这个问题。 你好,罗兰·德塞尼

I have an xml file that contains in products.
File's structure this:

<?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>

I would like to use magento's import system, but it does not work. I set maps in Profile Actions XML. This file's structure:

<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 is FOUND 0 ROWS, so it failed. Anyone could help me? I don't understand this problem.
Greetings, Roland Dercsenyi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡看悲欢离合 2024-10-12 09:31:06

您必须编写自己的解析器类,然后使用高级配置文件。 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 作为演示编写自己的类和解析函数

You have to write your own parser class and then use the advanced profiles. The convert_parser_xml_excel expects a file in the excel xml format.
If you look at the Mage_Dataflow_Model_Convert_Parser_Xml_Excel::parse() function you'll see it expects a different xml format than you have.

//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;
                    }

To resume:

  1. you have to use the advanced profiles and write your own parser function
  2. use the xml import profile as a base and write your own class and parse function using the Mage_Dataflow_Model_Convert_Parser_Xml_Excel as a demo
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文