रूट नोड नीचे तत्वों का पहला स्तर
$dom->documentElement->childNodes
साथ पहुँचा जा सकता childNodes संपत्ति एक 01 में शामिल, जिसे आप foreach
के साथ पुन: सक्रिय कर सकते हैं।
देखें DOMDocument::documentElement
यह एक सुविधा विशेषता है कि बच्चे नोड दस्तावेज़ के दस्तावेज़ तत्व है कि के लिए सीधी पहुँच की अनुमति देता है।
और DOMNode::childNodes
एक DOMNodeList कि इस नोड के सभी बच्चों में शामिल है। अगर कोई बच्चा नहीं है, तो यह एक खाली डोमनोडलिस्ट है।
childNodes
के बाद से DOMNode
की संपत्ति किसी भी वर्ग DOMNode
का विस्तार इस संपत्ति है (जो डोम में कक्षाओं के सबसे अधिक है), तो एक DOMElement
नीचे तत्वों का पहला स्तर प्राप्त करने के लिए है कि DOMElement के childNode संपत्ति का उपयोग करने की है।
ध्यान दें कि यदि आप अमान्य HTML या आंशिक दस्तावेजों पर DOMDocument::loadHTML()
का उपयोग करें, HTML पार्सर मॉड्यूल एचटीएमएल और शरीर टैग के साथ एक HTML कंकाल जोड़ देगा, तो डोम पेड़ में, अपने उदाहरण में HTML
हो जाएगा
<!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>
जो आपको XPath ट्रैवर्स या उपयोग करते समय ध्यान में रखना है। नतीजतन,
$dom = new DOMDocument;
$dom->loadHTML($str);
foreach ($dom->documentElement->childNodes as $node) {
echo $node->nodeName; // body
}
का उपयोग कर केवल <body>
DOMElement नोड पुनरावृति होगी। यह जानकर कि libxml कंकाल जोड़ देगा, आपको अपने उदाहरण कोड से div तत्व प्राप्त करने के लिए <body>
तत्व के बच्चे नोड्स पर पुन: सक्रिय करना होगा, उदा।
$dom->getElementsByTagName('body')->item(0)->childNodes
हालांकि, ऐसा करने भी, किसी भी खाली स्थान के नोड्स को ध्यान में रखना होगा ताकि आप या तो झूठी या सही तत्व nodeType के लिए क्वेरी के लिए preserveWhiteSpace
स्थापित करने के लिए सुनिश्चित करने के लिए है, तो आप केवल DOMElement
नोड्स प्राप्त करना चाहते हैं, उदाहरण के लिए
foreach ($dom->getElementsByTagName('body')->item(0)->childNodes as $node) {
if ($node->nodeType === XML_ELEMENT_NODE) {
echo $node->nodeName;
}
}
या XPath का उपयोग
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('/html/body/*') as $node) {
echo $node->nodeName;
}
अतिरिक्त जानकारी: