今天在用PHP编写XML的时候遇到了这样一个问题:
DOMDocument::createTextNode() expects parameter 1 to be string, object given in ...
我的代码是这样子的 function createXML($ret, $retString)
{
$response = $this->createDOM();
//print_r($this->dom);
//print_r($response);
// echo 'hello';
$ret = $this->dom->createElement('ret');
//print_r($ret);
$retText = $this->dom->createTextNode($ret);
//print_r($retText);
$ret->appendChild($retText);
$response->appendChild($ret);
$retString = $this->dom->createElement($retString);
$retStringText = $this->dom->createTextNode($retString);
$retString->appendChild($retStringText);
$response->appendChild($retString);
}上面是我自定义的XML类的一个方法,用于将传入的$ret和$retString,加到XML节点上。但是我在外部调用传参时,都是字符串,出现上面问题。在每个变量前面加强制转化语句(sting),就没有任何输出。
请问这应该怎么解决?
DOMDocument::createTextNode() expects parameter 1 to be string, object given in ...
我的代码是这样子的 function createXML($ret, $retString)
{
$response = $this->createDOM();
//print_r($this->dom);
//print_r($response);
// echo 'hello';
$ret = $this->dom->createElement('ret');
//print_r($ret);
$retText = $this->dom->createTextNode($ret);
//print_r($retText);
$ret->appendChild($retText);
$response->appendChild($ret);
$retString = $this->dom->createElement($retString);
$retStringText = $this->dom->createTextNode($retString);
$retString->appendChild($retStringText);
$response->appendChild($retString);
}上面是我自定义的XML类的一个方法,用于将传入的$ret和$retString,加到XML节点上。但是我在外部调用传参时,都是字符串,出现上面问题。在每个变量前面加强制转化语句(sting),就没有任何输出。
请问这应该怎么解决?
createElement返回的是DOMElement实例,就算你强制转换,也没有啥效果.
createTextNode需要传入的是字符串
$retString = $this->dom->createElement($retString);
你传入的字符串被createElement产生的实例给重置了类型
所以将顺序调整一下就OK了,
或者将字符串或者实例分别起不同的变量名.$retStringText = $this->dom->createTextNode($retString);
$retString = $this->dom->createElement($retString);
$retStringText = $this->dom->createTextNode($retString); 调的时候没改回去。
$retStringText = $this->dom->createTextNode('retString'); createTextNode需要传入的是字符串
{
$response = $this->createDOM();
//print_r($this->dom);
//print_r($response);
// echo 'hello';
$ret = $this->dom->createElement('ret');
//print_r($ret);
$retText = $this->dom->createTextNode($ret);
//print_r($retText);
$ret->appendChild($retText);
$response->appendChild($ret);
$retString = $this->dom->createElement($String);
$retStringText = $this->dom->createTextNode($String);
$retString->appendChild($retStringText);
$response->appendChild($retString);
}