有害的;试图获取非对象的属性“;PHP错误

有害的;试图获取非对象的属性“;PHP错误,php,Php,我正在将PHP中的XML文件解析为DOMDocument。这是我不久前为解析XML而编写的相对稳定的代码的一部分,直到最近一直工作良好。在一组类似语句的中间,我有以下代码行: $appDomain = $domDoc->getElementsByTagName("appDomain")->item(0)->textContent; 此方法会抛出一个错误“试图获取非对象的属性”,但代码仍然可以通过并正常工作 让我抓狂的是以下几点。使用“复制/粘贴”,我添加了以下行

我正在将PHP中的XML文件解析为DOMDocument。这是我不久前为解析XML而编写的相对稳定的代码的一部分,直到最近一直工作良好。在一组类似语句的中间,我有以下代码行:

    $appDomain = $domDoc->getElementsByTagName("appDomain")->item(0)->textContent;
此方法会抛出一个错误“试图获取非对象的属性”,但代码仍然可以通过并正常工作

让我抓狂的是以下几点。使用“复制/粘贴”,我添加了以下行

    echo "". $domDoc->getElementsByTagName("appDomain")->item(0)->textContent;
    $appDomain = $domDoc->getElementsByTagName("appDomain")->item(0)->textContent;
所以现在我运行了两次完全相同的代码,一次回显它,一次存储它。echo从我的XML中正确地打印了标记的值(提取),但我仍然得到了错误,错误行是对$appDomain行的赋值,而不是echo行

此外,如果我加上

echo $appDomain;
调用之后,它立即打印正确的值“Extract”,就好像没有发生错误一样。如果我注释掉$appDomain的赋值,我会在echo$appDomain行上得到一个“Undefined variable”错误(我这样做只是为了检查$appDomain没有在其他地方设置)。如果然后添加硬编码的$appDomain,如下所示:

    echo "". $domDoc->getElementsByTagName("appDomain")->item(0)->textContent;
    //$appDomain = $domDoc->getElementsByTagName("appDomain")->item(0)->textContent;
    $appDomain = "Extract";
    echo $appDomain; 
现在代码适当地打印了“ExtractExtract”,但是我在第一条回显行上遇到了试图获取属性错误的错误

到底发生了什么事?标记在XML中(已经有一段时间了,这段代码运行良好)。代码正确地获取元素及其文本内容,并将其正确地放置在变量$appDomain中。但它仍然会抛出一个错误

此外,以下var_转储的行为似乎与它们应该的完全一致:

    var_dump($domDoc->getElementsByTagName("appDomain"));
    echo "<br><br>";
    var_dump($domDoc->getElementsByTagName("appDomain")->item(0));
    echo "<br><br>";
    var_dump($domDoc->getElementsByTagName("appDomain")->item(0)->textContent);
但是我在最后一个var_转储中得到了错误(如果我将其注释掉,就不会得到错误)


再说一遍,到底发生了什么事

我在递归类方法中遇到了相同的错误,其中对象肯定是对象,但错误(警告)不断发生

首先,您可以使用
is\u object($el)


有时递归(xml解析器是递归的)和将参数传递给对象方法可能会导致问题。它可能与参数
->item(0)
有关。请尝试对元素0而不是参数0使用
->item()[0]

听起来很傻,但我猜这条线上有一个小小的腐败。删除你评论过的那一行,并修改副本,使其与原件一致doing@RiggsFolly,不傻,至少我也这么想,然后完全重新键入了这行(还复制了另一行目前正在运行的完全相似的行)。没有骰子。我曾希望这是一些奇怪的换行问题(比如其他开发人员中有一个\r\n或其他东西)。唉…我应该注意到,这是错误8,这可能意味着这根本不是问题?我想,只是需要让PHP闭嘴。
object(DOMNodeList)#3 (1) { ["length"]=> int(1) } 

object(DOMElement)#2 (18) { ["tagName"]=> string(9) "appDomain" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(9) "appDomain" ["nodeValue"]=> string(7) "Extract" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> string(22) "(object value omitted)" ["nextSibling"]=> string(22) "(object value omitted)" ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(9) "appDomain" ["baseURI"]=> string(62) "/Applications/MAMP/htdocs/Tmp/bowersjc/Experiment33/config.xml" ["textContent"]=> string(7) "Extract" } 

string(7) "Extract" Extract