CakeFest 2024: The Official CakePHP Conference

XMLReader::expand

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

XMLReader::expandRetourne une copie du nœud courant comme un nœud d'objet DOM

Description

public XMLReader::expand(?DOMNode $baseNode = null): DOMNode|false

Cette méthode copie le nœud courant et retourne l'objet approprié DOM.

Liste de paramètres

baseNode

Un DOMNode définissant la cible DOMDocument pour l'objet DOM créé.

Valeurs de retour

L'objet DOMNode résultant ou false en cas d'erreur.

add a note

User Contributed Notes 1 note

up
0
Sbastien
2 years ago
XMLReader::expand() expands the current subtree to DOM. SimpleXML is good too. To avoid a warning like "Imported Node must have associated Document" when using simplexml_import_dom(), we can do :

<?php

// Huge XML compressed file
$xml = XMLReader::open('compress.zlib:///path/to/my-data.xml.gz');

// Targeting a tiny subtree
while ($xml->name !== 'my-targeted-element') {
$xml->read();
}

// The trick is here...
// Subtree is expanded in an empty document...
$dom = $xml->expand(new DOMDocument());

// ... which can be imported by SimpleXML
$sx = simplexml_import_dom($dom);

// We can now process our tiny subtree with SimpleXML $sx
To Top