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()
如何解决这个问题?
答案 0 :(得分:0)
发生错误是因为$data
是DOMNodeList
,但没有getElementsByTagName()
方法。 $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()
而不是列表。