SimpleXML中不再存在节点

时间:2011-03-30 04:27:19

标签: php xml simplexml

我有一个我似乎无法解决的问题。当$array为空时,下面的代码将返回php错误“节点不再存在”。如果$array不为空,则可以正常工作。当$prinid = $array[0];为空时,错误将显示在$array的行中。

$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$prinid = $array[0];

if (isset($array[0])) {
    $currentuser = 1;
} else {
    $currentuser = 0;
}

更新

以下是我现在所得到的内容:

  

警告:count()[function.count]:* * * * * * *

中不再存在节点
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$currentuser = 0;
if (isset($array) && count($array) > 0) {
    $prinid = $array[0];
    $currentuser = 1;
}

2 个答案:

答案 0 :(得分:2)

这意味着您尝试获取的属性不存在。您应该检查该数组是否为空

if (isset($array) && count($array) > 0)
    $prinid = $array[0];

答案 1 :(得分:0)

if ($a == 'principal-list' && $b && $b->principal) {
    $array = $b->principal->attributes();
}

重要的是 - 检查$b->principal - 您需要检查此xml对象是否为空。如果确实如此,那么在任何尝试解决$b->principal->attributes()时都会出现此错误。