默认为扩展节点(您的问题中遗漏了)
$node = $xmlReader->expand();
不能使用XMLReader进行编辑(按该名称有意义)。 但是,如果将特定的DOMNode导入到新的DOMDocument则可以使它可编辑 :
$doc = new DOMDocument();
$node = $doc->importNode($node);
然后,您可以执行DOM提供的任何DOM操作,例如,添加文本节点:
$textNode = $doc->createTextNode('New Child TextNode added :)');
$node->appendChild($textNode);
如果您希望使用SimpleXML进行操作,则还可以在将节点导入到DOMDocument 之后将其导入到SimpleXML中:
$xml = simplexml_import_dom($node);
上面的示例利用了我的xmlreader-iterators ,它为我提供了一些更好的XMLReader接口:
$reader = new XMLReader();
$reader->open($xmlFile);
$elements = new XMLElementIterator($reader, 'data');
foreach ($elements as $element)
{
$node = $element->expand();
$doc = new DOMDocument();
$node = $doc->importNode($node, true);
$node->appendChild($doc->createTextNode('New Child TextNode added :)'));
echo $doc->saveXML($node), "\n";
}
使用以下XML文档:
上面的小示例代码产生以下输出:
New Child TextNode added :)
New Child TextNode added :)
New Child TextNode added :)
New Child TextNode added :)