childNodes에 속성이 01을 포함이며 foreach
으로 반복 할 수 있습니다.
이 문서의 문서 요소가되어있는 아이 노드에의 직접 액세스를 가능하게하는 편리한 속성입니다 DOMDocument::documentElement
를 참조하십시오.
및 DOMNode::childNodes
이 노드의 아이를 모두 포함한
DOMNodeList. 아이가없는 경우, 이것은 하늘의 DOMNodeList입니다. childNodes
이후
는 DOMNode
의 속성 때문에 DOMElement
다음 요소의 첫번째 레벨을 얻기 위해, 이러한 특성을 갖는다 (DOM에서 대부분의 클래스이다) DOMNode
연장 어떤 클래스 DOMElement의 childNode에 등록한다는 액세스하는 것이다. 당신이 잘못된 HTML 또는 일부 문서에 DOMDocument::loadHTML()
를 사용하는 경우 DOM 트리에, 귀하의 예제에서 HTML이
될 것 있도록 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를 트래버스하거나 사용할 때 고려해야 할 사항입니다. 따라서, 단지 <body>
DOMElement 노드를 반복한다
$dom = new DOMDocument;
$dom->loadHTML($str);
foreach ($dom->documentElement->childNodes as $node) {
echo $node->nodeName; // body
}
을 사용. libxml이 스켈레톤을 추가한다는 것을 알게되면
<body>
요소의 childNodes를 반복해야 예제 코드에서 div 요소를 가져와야합니다.
$dom->getElementsByTagName('body')->item(0)->childNodes
그러나, 당신은 단지 DOMElement
노드를 얻으려면 당신이 바로 그 요소 nodeType에 대한 허위 또는 쿼리에 preserveWhiteSpace
을 설정 확인해야 하나, 그래서 또한, 공백 노드 고려 그럴 경우, 예를 들어,
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;
}
추가 정보 :