CakeFest 2024: The Official CakePHP Conference

simplexml_import_dom

(PHP 5, PHP 7, PHP 8)

simplexml_import_domBir DOM düğümü alıp bir SimpleXMLElement nesnesi döndürür

Açıklama

simplexml_import_dom(SimpleXMLElement|DOMNode $düğüm, ?string $sınıfAdı = SimpleXMLElement::class): ?SimpleXMLElement

Bir DOM düğümü alıp bir SimpleXMLElement düğümü oluşturur. Bu yeni nesne yeni bir Basit XML elemanı olarak kullanılabilir.

Bağımsız Değişkenler

düğüm

Bir DOM Eleman düğümü

sınıfAdı

İsteğe bağlı bu bağımsız değişken ile bir nesne döndürmek üzere SimpleXMLElement sınıfından türetilmiş bir sınıf ismi belirtilebilir.

Dönen Değerler

Başarısız olursa null yoksa bir SimpleXMLElement nesnesi döndürür.

Örnekler

Örnek 1 - DOM ithali

<?php
$dom
= new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!
$dom) {
echo
'Belge çözümlenemedi';
exit;
}

$s = simplexml_import_dom($dom);

echo
$s->book[0]->title;
?>

Yukarıdaki örneğin çıktısı:

blah

Ayrıca Bakınız

add a note

User Contributed Notes 3 notes

up
-1
paul dot allsopp at digital-pig dot com
9 months ago
Why not just:
simplexml_import_dom(dom_import_simplexml($SimpleXmlNode))
up
-2
shirkaen at gmail dot com
7 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;
$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:
//italic
up
-3
brandonkirsch at perceptionilluminates dot com
10 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