xml数组不起作用

时间:2015-03-27 19:40:38

标签: php arrays xml

我有这个xml文件:

<product    
<EANCode EAN="5053973641331"/>

我用它来分配值

  $prodean=$XMLarray['Product']['EANCode']['@attributes'];
  $ean1[0]=$prodean['EAN'];

它工作正常。 但是当我有更多的EAN值时,例如

<EANCode EAN="5053973641331"/>
<EANCode EAN="7301433035830"/>
<EANCode EAN="0730143303583"/>
<EANCode EAN="0730143303378"/>
<EANCode EAN="5053118731828"/>
<EANCode EAN="5053973635132"/>
它的工作做得很好。 我的错误在哪里?

我想要第一个EAN值。我有它,如果在xml文件中只有一个EAN值,但如果有两个或更多的值我有$ ean1 [0]

的NULL

2 个答案:

答案 0 :(得分:0)

这是一个简短的例子。我测试了你的代码,有点棘手。

$xml = '<products>
<EANCode EAN="5053973641331"/>
<EANCode EAN="7301433035830"/>
<EANCode EAN="0730143303583"/>
<EANCode EAN="0730143303378"/>
<EANCode EAN="5053118731828"/>
<EANCode EAN="5053973635132"/>
</products>';

$XMLarray = simplexml_load_string($xml);
foreach($XMLarray->EANCode as $xml) {
    echo $xml->attributes()['EAN']."<br>";
}

所以使用你的xml示例:

http://data.icecat.biz/export/freexml.int/IT/8952561.xml

我的代码无效,因为您有一个名为“Product”的节点,因此您应该首先访问它们。然后应该可以获得数据。

$XMLarray = simplexml_load_string(file_get_contents("test.xml"));
foreach($XMLarray->Product->EANCode as $xml) {
    echo $xml->attributes()['EAN']."<br>";
}

我已将您的xml放到文件test.xml中,并且该代码正在运行。

答案 1 :(得分:0)

试试这个:

$file = 'http://openIcecat-xml:freeaccess@data.icecat.biz/export/freexml.int/IT/8952561.xml';
$xml = simplexml_load_file($file);
// get first "EANCode" node and its "EAN" attribute
echo $xml->Product->EANCode[0]['EAN'];

希望这有帮助。