1

「Magmi」を介してインポートできるように、XML ファイルから配列にデータを取得しようとしています。次のコードを使用して、3.6GB の XML ファイルを操作しています。

<?php

$z = new XMLReader;
$z->open('wpcatsub.xml');

$doc = new DOMDocument;

// move to the first <App /> node
while ($z->read() && $z->name !== 'App');

// now that we're at the right depth, hop to the next <App/> until the end of the tree
while ($z->name === 'App')
{
    // either one should work
    //$node = new SimpleXMLElement($z->readOuterXML());
    $node = simplexml_import_dom($doc->importNode($z->expand(), true));

    // now you can use $node without going insane about parsing
    var_dump($node->element_1);

    // go to next <product />
    $z->next('App');
}

?>

PHP ファイルをロードすると、エラーは表示されず、ページは空白になります。私のXMLデータ構造は以下のとおりです...

<App action="A" id="1">
    <BaseVehicle id= "17491"/>
    <Note><![CDATA[License Plate Lamp]]></Note>
    <Qty>.000</Qty>
    <PartType id= "10043"/>
    <Part>W0133-1620896</Part>
    <Product>
        <PartNumber>W0133-1620896</PartNumber>
        <BrandID>OES</BrandID>
        <BrandDescription><![CDATA[Genuine]]></BrandDescription>
        <WorldpacCategoryID>P9032</WorldpacCategoryID>
        <Price>29.85</Price>
        <ListPrice>33.17</ListPrice>
        <Available>Y</Available>
        <OEFlag>OEM</OEFlag>
        <Weight>.10</Weight>
        <Height>.7</Height>
        <Width>4.4</Width>
        <Length>4.4</Length>
        <SellingIncrement>1</SellingIncrement>
        <Popularity>D</Popularity>
        <ImageURL><![CDATA[http://img.eautopartscatalog.com/live/W01331620896OES.JPG]]></ImageURL>
        <ThumbURL><![CDATA[http://img.eautopartscatalog.com/live/thumb/W01331620896OES.JPG]]></ThumbURL>
    </Product>
    <ImageURL><![CDATA[http://img.eautopartscatalog.com/live/W01331620896OES.JPG]]></ImageURL>
    <ThumbURL><![CDATA[http://img.eautopartscatalog.com/live/thumb/W01331620896OES.JPG]]></ThumbURL>
</App>

ファイルのサイズが原因で停止していますか? もしそうなら、XMLReader は大きな XML ファイルに対して動作するはずではありませんか? 他に何もない場合、他にどのようなオプションがありますか?

必要に応じて XML データをデータベースにロードし、SELECT クエリを使用して MAGMI インポート用の配列を構築できると思います。XMLファイルをSQLデータベースにインポートする方法はわかりませんが。必要に応じて、喜んでご案内いたします。

4

0 に答える 0