(PHP 5, PHP 7, PHP 8)

simplexml_import_domConstruit un objet SimpleXMLElement à partir d'un objet DOM


simplexml_import_dom(SimpleXMLElement|DOMNode $node, ?string $class_name = SimpleXMLElement::class): ?SimpleXMLElement

simplexml_import_dom() prend un nœud d'un document DOM et la transforme en nœud SimpleXML. Ce nouvel objet peut alors être utilisé comme un objet natif SimpleXML.

Liste de paramètres


Un élément DOM


Vous pouvez utiliser ce paramètre optionnel afin que simplexml_load_string() retourne un objet de la classe spécifiée. Cette classe doit étendre la classe SimpleXMLElement.

Valeurs de retour

Retourne un objet SimpleXMLElement ou null en cas d'échec.


Exemple #1 Import DOM

= new DOMDocument;
if (!
$dom) {
'Erreur durant l\'analyse du document';

$s simplexml_import_dom($dom);


L'exemple ci-dessus va afficher :


Voir aussi

add a note add a note

User Contributed Notes 2 notes

shirkaen at gmail dot com
5 years ago
/*If tags in DOM have text and some part of this text is surrounded by other tag, simple_import_dom object doesn't contain position of child tag, so rendering it back to html/xml can be a problem. Printing such a node is also peculiar. Eg.*/

$text = "<body><p>Some text before <em>italic </em>and after text.</p></body>";
$dom = new DOMDocument;
$result = simplexml_import_dom($dom);
echo $result->p;

//Prints :
//Some text before and after text.

//SimpleXMLElement Object ( [em] => italic )

//does more or less the same:
//SimpleXMLElement Object ( [0] => italic )

//object(SimpleXMLElement)#8 (1) { ["em"]=> string(7) "italic " }

//object(SimpleXMLElement)#9 (1) { [0]=> string(7) "italic " }

echo $result->p->em;
brandonkirsch at perceptionilluminates dot com
8 years ago
simplexml_import_dom() will accept DOMNodes or other SimpleXMLElements.  This has a useful purpose if you are extending the SimpleXMLElement class and would prefer the xpath() method to return your class extension instead of basic SimpleXMLElements.  For example:

class MySimpleXML extends SimpleXMLElement{
    public function xpath($xpath){
        $return = array();
        $simpleXmls = parent::xpath($xpath); // run SimpleXMLElement xpath, returning an array of SimpleXMLElements
        foreach($simpleXmls as $xml){
            $return[] = simplexml_import_dom($xml,'MySimpleXML'); // copy SimpleXMLElement, returning as MySimpleXML instance
        return $return;

Now I can create an instance of MySimpleXML, run an xpath, and get my results back as an array of MySimpleXML elements instead of the native SimpleXMLElement:

$mySimpleXml = new mySimpleXml('<root><node/></root>');

$array = $mySimpleXml->xpath('/root/node'); // returns array with a single MySimpleXml object
To Top