0

我正在尝试在 XML 文档中附加一个节点。我已经从我的 xml 文档中提取了最后一个 itemid 并将其递增 1 以在新添加的 xml 节点中添加一个唯一的 id。但是,当我这样做时,它会抛出错误“警告:DOMDocument::createTextNode() 期望参数 1 是字符串,给定对象”。我什至使用 var_dump 检查了变量的类型,在我转换为字符串后它是字符串。但是,我不明白为什么会出现这样的错误。这里,是代码。

    $xml =new SimpleXMLElement("goods.xml", null, true);

    // to get the last id
    $last = $xml->xpath("/items/item[last()]");

            // converted to integer
    $id = (int)($last[0]->itemid);

            // converted to string
    $itemid = strval($id+1);
    var_dump($itemid);

      $doc = new DomDocument( '1.0' );
      $doc->preserveWhiteSpace = false;
      $doc->formatOutput = true;

    if( $xml = file_get_contents( 'goods.xml') ) {
        $doc->loadXML( $xml, LIBXML_NOBLANKS );

        // find the headercontent tag
        $items = $doc->getElementsByTagName('items')->item(0);

        $item = $doc->createElement('item');
        $item = $items->appendChild($item);

        $itemid = $doc->createElement('itemid'); 
        $itemid = $item->appendChild($itemid);   
        $value = $doc->createTextNode("".$itemid.""); // error occurs here
        $value = $itemid->appendChild($value);

        $itemname = $doc->createElement('itemname'); 
        $itemname = $item->appendChild($itemname);   
        $value = $doc->createTextNode($name);
        $value = $itemname->appendChild($value);

        $itemprice = $doc->createElement('itemprice'); 
        $itemprice = $item->appendChild($itemprice);   
        $value = $doc->createTextNode($price);
        $value = $itemprice->appendChild($value);

         $doc->save('goods.xml');

当代替使用 $itemid 时,我只需使用任何文本,此代码就可以完美运行。我刚刚开始学习 XML,所以如果您知道为什么在一切似乎都很好时会出现此错误,请提供帮助。

谢谢。

4

0 回答 0