Objekt-Daten mit verschachtelter XML-Struktur ersetzen

Auslesen verschachtelter Objekt-Daten (am Beispiel von wd:entry), und Zurückschreiben der Daten
require_once $_SERVER['DOCUMENT_ROOT'] . '/weblication/grid.php';

$path '/de/index.php';
$dom = new DOMDocument();
$dom->load$_SERVER['DOCUMENT_ROOT'] . $path );
$xpath = new DOMXPath$dom );

$existingNodes = [];
$newNodes = [ '/de/start.php''/de/neu.php' ];

$classesQuery '/wd:document/wd:extension/wd:object/wd:data[@id="classes"]';

$classesNodeList $xpath->query$classesQuery );

if( 
$classesNodeList->length === ) {
    
$classesNode $classesNodeList->item);

    
$entryNodeList $xpath->query'wd:entry'$classesNode );
    if( 
$entryNodeList->length ) {
        foreach( 
$entryNodeList as $entryNode ) {
            
$existingNodes[] = $entryNode->getAttribute'url' );
        }
    }

    
$classesNode->nodeValue '';
    
$setNodes = !empty( $newNodes ) ? array_uniquearray_merge$existingNodes$newNodes ) ) : [];

    if( !empty( 
$setNodes ) ) {
        foreach( 
$setNodes as $setNode ) {

            
$node $dom->createElement'wd:entry' );
            
$node->setAttribute'url'$setNode );
            
$classesNode->appendChild$node );

        }
    }

    
$content $dom->saveXML();
    
$content wStringconverter::removePrologXml$content );

    
file_put_contents$_SERVER['DOCUMENT_ROOT'] . $path$content );

}