childNodes tesisinde 01 içerir foreach
ile yineleyebileceğiniz.
Bu belgenin belge elemanı olan çocuk düğüme doğrudan erişim sağlayan bir kolaylık niteliktir DOMDocument::documentElement
bakınız.
ve DOMNode::childNodes
bu düğümün tüm çocukları içeren
A DOMNodeList. Çocuk yoksa, bu boş bir DOMNodeList. childNodes
yana
DOMNode
bir özelliği yani DOMElement
altında elemanlarının birinci seviyesi elde etmek için, bu özelliğe sahip (DOM sınıfların en çok) DOMNode
uzanan herhangi bir sınıf DOMElement en childNode özelliği bu ulaşmak için olmasıdır. Geçersiz HTML veya kısmi belgeler üzerinde DOMDocument::loadHTML()
kullanırsanız DOM ağacında, sizin örnekte HTML
olacak, böylece HTML ayrıştırıcı modülü, html ve vücut etiketleri ile bir HTML iskeleti katacak
Not Geçiş yaparken veya XPath kullanırken dikkate almanız gereken
<!DOCTYPE html … ">
<html><body><div id="header">
</div>
<div id="content">
<div id="sidebar">
</div>
<div id="info">
</div>
</div>
<div id="footer">
</div></body></html>
. Bunun sonucunda, sadece <body>
DOMElement düğümü yineleme olacak
$dom = new DOMDocument;
$dom->loadHTML($str);
foreach ($dom->documentElement->childNodes as $node) {
echo $node->nodeName; // body
}
kullanılmıştır. Libxml'in iskeleti ekleyeceğini bilerek, örnek kodunuzdaki div öğelerini almak için
<body>
öğesinin childNode'ları üzerinde yineleme yapmanız gerekir.
$dom->getElementsByTagName('body')->item(0)->childNodes
Ancak, yalnızca DOMElement
düğümleri almak istiyorsanız doğru elemanı nodeType için yanlış veya sorguya preserveWhiteSpace
ayarlamak için emin olmak gerekir ya yüzden de, herhangi bir boşluk düğümleri dikkate alacağımız Bunu yaparken, örneğin
foreach ($dom->getElementsByTagName('body')->item(0)->childNodes as $node) {
if ($node->nodeType === XML_ELEMENT_NODE) {
echo $node->nodeName;
}
}
veya kullanım XPath
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('/html/body/*') as $node) {
echo $node->nodeName;
}
ek bilgiler: