今天在用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),就没有任何输出。
请问这应该怎么解决?

解决方案 »

  1.   

    很简单的问题.
    createElement返回的是DOMElement实例,就算你强制转换,也没有啥效果.
    createTextNode需要传入的是字符串
    $retString = $this->dom->createElement($retString);
    你传入的字符串被createElement产生的实例给重置了类型
    所以将顺序调整一下就OK了,
    或者将字符串或者实例分别起不同的变量名.$retStringText = $this->dom->createTextNode($retString);
    $retString = $this->dom->createElement($retString); 
      

  2.   

    实际上上面的代码我是这样的$retString = $this->dom->createElement('retString');
    $retStringText = $this->dom->createTextNode($retString); 调的时候没改回去。
      

  3.   

    $retString = $this->dom->createElement('retString');
    $retStringText = $this->dom->createTextNode('retString'); createTextNode需要传入的是字符串 
      

  4.   

        function createXML($ret, $String)
        {
            $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);
                
        }