0

var_dump($object)输出以下结果:

object(stdClass)#9 (5) {
    ["data"]=>  object(stdClass)#8 {
        ["validFiling"]=>  object(stdClass)#7 {
                ["indicators"]=>  string(6) "MODE_S"
        }
        ["plan"]=>  object(stdClass)#6 {
            ["id"]=>  string(10) "xxx"
        }
    }
}

在这个数据结构中,我需要访问字段的内容id。我通过以下方式执行此操作:

try
{
  $object =   $client->getPlan($p);
  var_dump($object);
}
  catch (Exception $e) {
  print $e->getMessage();
}

$line = $client->getLastResponse();

$doc = new DOMDocument();
$doc->loadXML($line);
$data = $doc->getElementsByTagName('data');
$fp = $data->getElementsByTagName('plan');
$id = $fp->getElementsByTagName('id');
$fId = $id->item(0)->nodeValue;

错误是(在该行$fp = $data->getElementsByTagName('plan')):

Call to undefined method DOMNodeList::getElementsByTagName()

如何解决这个问题?

4

1 回答 1

0

发生错误是因为$data没有DOMNodeListgetElementsByTagName()方法。$fp您对变量有同样的问题。如果要访问data找到的第一个元素,请更改为:

$data = $doc->getElementsByTagName('data')->item(0);
$fp = $data->getElementsByTagName('plan')->item(0);
$id = $fp->getElementsByTagName('id');

或者,如果您想迭代data元素并将处理应用于每个元素:

$dataList = $doc->getElementsByTagName('data');

foreach($dataList as $data)
{
    $fp = $data->getElementsByTagName('plan')->item(0);
    $id = $fp->getElementsByTagName('id');
    $fId = $id->item(0)->nodeValue;
}

上面的工作是因为它调用getElementsByTagName()节点本身而不是列表。

于 2013-09-09T15:42:20.430 回答