我正在尝试在 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,所以如果您知道为什么在一切似乎都很好时会出现此错误,请提供帮助。
谢谢。