【问题标题】:Error : Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, string given错误:传递给 DOMNode::appendChild() 的参数 1 必须是 DOMNode 的实例,给定字符串
【发布时间】:2017-07-11 12:03:19
【问题描述】:

我的代码是这样的

     $xml = new \DOMDocument();
      .
      .
      .   
     $VAST_Impression ="some_url"
     $xml_Impression = $xml->Impression= htmlspecialchars($VAST_Impression);
     $xml_InLine->appendChild($xml_Impression);

我收到这样的错误:

PHP 可恢复错误 – yii\base\ErrorException

传递给 DOMNode::appendChild() 的参数 1 必须是 DOMNode 的实例,给定字符串

【问题讨论】:

  • 这是什么意思?我是新手请帮忙
  • 这意味着appendChild的第一个参数需要是DOMNode的一个实例,但是你传入了一个字符串。 IE。 $xml_Impression 是字符串,但必须是 DOMNode 的实例。
  • 这是否意味着我应该使用 createElement() 而不是 htmlspecialchars()?因为如果我使用 createElement 我不能在 url 中使用 '&' 这就是为什么我改为 htmlspecialchars()....无论如何?
  • createElement 会给你一个DOMElement,它是DOMNode 的扩展,所以是的。您仍然可以对传入节点的内容进行编码。
  • 您仍然需要编码,只需将其返回到createElement。 IE。 createElement(htmlspecialchars($string))

标签: php dom yii2


【解决方案1】:

你会以错误的方式访问方法

$xml_Impression = $xml->Impression->htmlspecialchars($VAST_Impression);

或者你使用了错误的方法

$xml_Impression = $xml->Impression->createElement($VAST_Impression);

例如:

$xml_Impression = $xml->Impression->createElement('your_tag', $VAST_Impression);

【讨论】:

  • 是的,这解决了问题,但我无法在 url $VAST_Impression 中传递参数它给了我这个错误DOMDocument::createElement(): unterminated entity reference
  • 你必须传递一个有效的内容..检查真实的字符串内容并确保它对createElement有效..回答更新..你需要一个标签和一个值
猜你喜欢
  • 2023-03-30
  • 2016-08-10
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2016-01-17
  • 2018-06-01
相关资源
最近更新 更多