为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻翻过去那场雪 2022-07-16 18:30:24
我正在使用此代码来解析来自 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' =>"",    );}因此,如果接受的值为 true,则它可以正常工作并给出所需的结果。但如果接受不存在,则会引发错误。如何检查节点是否存在于 XML 中?任何帮助表示赞赏。
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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


$acceptedItems = $doc->getElementsByTagName('accepted');

if ($acceptedItems->length > 0 && $acceptedItems->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' => "",

    );

}


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信