デフォルトで展開されたノードになります(質問にはありません)
$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 を使用する場合は、ノードを にインポートした後で、ノードを SimpleXML にインポートすることもできますDOMDocument
。
$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 ドキュメントを使用します。
<xml>
<data/>
<boo>
<blur>
<data/>
<data/>
</blur>
</boo>
<data/>
</xml>
上記の小さなコード例では、次の出力が生成されます。
<data>New Child TextNode added :)</data>
<data>New Child TextNode added :)</data>
<data>New Child TextNode added :)</data>
<data>New Child TextNode added :)</data>