PHP 7.2.0 Beta 3 Released


(PHP 5, PHP 7)

simplexml_import_dom Получает объект класса SimpleXMLElement из узла DOM.


SimpleXMLElement simplexml_import_dom ( DOMNode $node [, string $class_name = "SimpleXMLElement" ] )

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

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


Узел-элемент DOM


Вы можете использовать этот дополнительный параметр для того, чтобы функция simplexml_import_dom() возвращала объект указанного класса. Этот класс должен расширять класс SimpleXMLElement.

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

Возвращает SimpleXMLElement или FALSE в случае возникновения ошибки.


Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.


Пример #1 Импорт DOM

= new DOMDocument;
if (!
$dom) {
'Ошибка при разборе документа';

$s simplexml_import_dom($dom);


Результат выполнения данного примера:


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

add a note add a note

User Contributed Notes 2 notes

shirkaen at gmail dot com
9 months 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
4 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