我正在尝试在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,所以如果你知道为什么在一切看起来都没问题的时候出现这个错误,请提供帮助。
感谢。