如何检查XML中是否存在节点?

时间:2020-01-09 06:17:42

标签: php xml laravel

我正在使用此代码来解析来自API的XML响应。获取错误尝试获取非对象的属性

$doc = new  \DOMDocument();
$doc->loadXML($response);
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$xml_string = $doc->saveXML();
$doc->loadXML($xml_string);

如果给出正确的结果,则工作正常,但如果给出错误,则对未定义的对象进行错误调用。我正在访问像这样的值

if($doc->getElementsByTagName('accepted')->item(0)->nodeValue == true){
    $json = array(
        'success' => 1,
        'ACN' => $doc->getElementsByTagName('acn')->item(0)->nodeValue,
        'URL' => htmlspecialchars($doc->getElementsByTagName('certificateUrl')->item(0)->nodeValue)
    );

}else{
    $json = array(
        'success' => 0,
        'error' =>"",
    );
}

因此,如果accepted的值为true,则可以正常工作并给出所需的结果。但是,如果接受的不存在,则会引发错误。如何检查XML中是否存在该节点?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

DOM::getElementsByTagName返回一个DOMNodeList实例。该对象具有length属性,您可以在继续访问其中的项目之前检查该属性。

envFrom:
- configMapRef:
  name: app-config