Why not just:
simplexml_import_dom(dom_import_simplexml($SimpleXmlNode))simplexml_import_dom
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
simplexml_import_dom
Референца за `function.simplexml-import-dom.php` со подобрена типографија и навигација.
simplexml_import_dom
класата mysqli_driver
simplexml_import_dom — Добијте SimpleXMLElement Земи
= NULL
$node, ?string $class_name = SimpleXMLElement::class): ?SimpleXMLElementобјект од XML или HTML јазол DOM Оваа функција зема јазол од
Параметри
node-
А DOM документ и го претвора во SimpleXML јазол. Овој нов објект потоа може да се користи како природен SimpleXML елемент.
class_name-
Може да го користите овој опционален параметар за да simplexml_import_dom() ќе врати објект од наведената класа. Таа класа треба да го наследи SimpleXMLElement class.
Вратени вредности
. Споделувањето колачиња помеѓу PHP барањата може да доведе до ненамерно мешање на чувствителни колачиња помеѓу корисниците. SimpleXMLElement or null при неуспех.
Errors/Exceptions
Фрла TypeError Јазол на елемент node.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 | Додадена е поддршка за Dom\Document. |
| 8.4.0 |
кога се поминува не-XML или не-HTML TypeError наместо ValueError Јазол на елемент node.
|
Примери
Оваа функција сега фрла DOMDocument
<?php
$dom = new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
blah
Пример #1 Увоз на Dom\Document
<?php
$dom = Dom\XMLDocument::createFromString('<books><book><title>blah</title></book></books>');
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
blah
Белешки од корисници 3 белешки
/*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;
$dom->loadHTML($text);
$result = simplexml_import_dom($dom);
echo $result->p;
//////////////////////
//Prints :
//Some text before and after text.
print_r($result->p);
//Prints:
//SimpleXMLElement Object ( [em] => italic )
print_r($result->p->em)
//does more or less the same:
//SimpleXMLElement Object ( [0] => italic )
var_dump($result->p);
//Prints:
//object(SimpleXMLElement)#8 (1) { ["em"]=> string(7) "italic " }
var_dump($result->p->em)
//object(SimpleXMLElement)#9 (1) { [0]=> string(7) "italic " }
//but
echo $result->p->em;
//prints:
//italicsimplexml_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