dom_import_simplexml

(PHP 5, PHP 7)

dom_import_simplexml Получает объект класса DOMElement из объекта класса SimpleXMLElement

Описание

DOMElement dom_import_simplexml ( SimpleXMLElement $node )

Эта функция берет узел node класса SimpleXML и превращает его в узел DOMElement. Затем этот новый объект может быть использован как нативный узел DOMElement.

Список параметров

node

Узел SimpleXMLElement.

Возвращаемые значения

Добавленный узел DOMElement или FALSE в случае возникновения любых ошибок.

Примеры

Пример #1 Импорт SimpleXML в DOM с помощью функции dom_import_simplexml()

<?php

$sxe 
simplexml_load_string('<books><book><title>чепуха</title></book></books>');

if (
$sxe === false) {
    echo 
'Ошибка при разборе документа';
    exit;
}

$dom_sxe dom_import_simplexml($sxe);
if (!
$dom_sxe) {
    echo 
'Ошибка при преобразовании XML';
    exit;
}

$dom = new DOMDocument('1.0');
$dom_sxe $dom->importNode($dom_sxetrue);
$dom_sxe $dom->appendChild($dom_sxe);

echo 
$dom->saveXML();

?>

Смотрите также

Коментарии

I've found that newer versions of PHP5 require some special syntax in order to properly convert between SimpleXML and DOM. It's not as easy as calling dom_import_simplexml() with a SimpleXML node. To get a proper DOM document (which you need to do most things) you need:
<?php
//$xml is a SimpleXML instance
$domnode dom_import_simplexml($xml);
$dom = new DOMDocument();
$domnode $dom->importNode($domnodetrue);
$dom->appendChild($domnode);
?>

Switching back, though, is, well...simple.

<?php
//$dom is a DOMDocument instance
$xml simplexml_import_dom($dom);
?>
2006-06-02 00:44:19
http://php5.kiev.ua/manual/ru/function.dom-import-simplexml.html
justinpatrin at php dot net:
> To get a proper DOM document (which you need to do most things) you need...

No you don't. Just do: 
<?php
$dom 
dom_import_simplexml($xml)->ownerDocument;
?>
2007-12-12 14:22:45
http://php5.kiev.ua/manual/ru/function.dom-import-simplexml.html
Автор:
SimpleXML is an 'Object Mapping XML API'. It is not DOM, per se. SimpleXML converts the XML elements into PHP's native data types.

The dom_import_simplexml and simplexml_import_dom functions do *not* create separate copies of the original object. You are free to use the methods of either or both interchangeably, since the underlying instance is the same.

<?php
   
// initialize a simplexml object
   
$sxe simplexml_load_string('<root/>');
   
   
// get a dom interface on the simplexml object
   
$dom dom_import_simplexml($sxe);

   
// dom adds a new element under the root
   
$element $dom->appendChild(new DOMElement('dom_element'));
   
   
// dom adds an attribute on the new element
   
$element->setAttribute('creator''dom');

   
// simplexml adds an attribute on the dom element
   
$sxe->dom_element['sxe_attribute'] = 'added by simplexml';

   
// simplexml adds a new element under the root
   
$element $sxe->addChild('sxe_element');
   
   
// simplexml adds an attribute on the new element
   
$element['creator'] = 'simplexml';

   
// dom finds the simplexml element (via DOMNodeList->index)
   
$element $dom->getElementsByTagName('sxe_element')->item(0);

   
// dom adds an attribute on the simplexml element
   
$element->setAttribute('dom_attribute''added by dom');
   
    echo (
'<pre>');           
   
print_r($sxe);
    echo (
'</pre>');
?>

Outputs:

SimpleXMLElement Object
(
    [dom_element] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [creator] => dom
                    [sxe_attribute] => added by simplexml
                )

        )

    [sxe_element] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [creator] => simplexml
                    [dom_attribute] => added by dom
                )

        )

)

What this illustrates is that both interfaces are operating on the same underlying object instance. Also, when you dom_import_simplexml, you can create and add new elements without reference to an ownerDocument (or documentElement).

So passing a SimpleXMLElement to another method does not mean the recipient is limited to using SimpleXML methods.
 
Hey Presto! Your telescope has become a pair of binoculars!
2009-03-06 03:09:54
http://php5.kiev.ua/manual/ru/function.dom-import-simplexml.html
Very useful to add a CDATA node with SimpleXMLElement (use it like addChild) :

<?php
class My_SimpleXMLElement extends SimpleXMLElement {
   
    public function 
addChildWithCData($name$value NULL) {
       
$new_child $this->addChild($name);
       
       
$node dom_import_simplexml($new_child); 
       
$no $node->ownerDocument
       
$node->appendChild($no->createCDATASection($value)); 
   
        return 
$new_child;
    }
}
2016-05-20 12:58:59
http://php5.kiev.ua/manual/ru/function.dom-import-simplexml.html
//No need to initiate, import and append on example#1

(...)
$dom_sxe = dom_import_simplexml($sxe);
if (!$dom_sxe) {
    echo 'Erreur lors de la conversion du XML';
    exit;
}

//$dom = new DOMDocument('1.0');
//$dom_sxe = $dom->importNode($dom_sxe, true);
//$dom_sxe = $dom->appendChild($dom_sxe);

//use ownerDocument propertie 
echo $dom->ownerDocument->saveXML();

?>
2020-09-08 23:08:41
http://php5.kiev.ua/manual/ru/function.dom-import-simplexml.html

    Поддержать сайт на родительском проекте КГБ