PHP Conference Japan 2024

DOMNode::hasChildNodes

(PHP 5, PHP 7, PHP 8)

DOMNode::hasChildNodes 檢查節點是否有子節點

說明

public DOMNode::hasChildNodes(): bool

此函數檢查節點是否有子節點。

參數

此函數沒有參數。

回傳值

成功時回傳 true,失敗時回傳 false

參見

新增註解

使用者貢獻註解 4 則註解

6
sansana
14 年前
我個人認為使用簡單的:[code]if($DOMNode->childNodes <>0){}[/code]效果更好。
6
syngcw at syncgw.com
14 年前
這個函數有點棘手。如果您想查找 XML 子節點,它會無用。您需要建立一個解決方法

<?php

$x
= new DOMDocument();
$x->loadXML('
<A>
<B>b-text</B>
<C>
<D>d-text</D>
</C>
<E/>
</A>'
);

shownode($x->getElementsByTagName('A')->item(0));
function
shownode($x) {
foreach (
$x->childNodes as $p)
if (
hasChild($p)) {
echo
$p->nodeName.' -> CHILDNODES<br>';
shownode($p);
} elseif (
$p->nodeType == XML_ELEMENT_NODE)
echo
$p->nodeName.' '.$p->nodeValue.'<br>';
}
function
hasChild($p) {
if (
$p->hasChildNodes()) {
foreach (
$p->childNodes as $c) {
if (
$c->nodeType == XML_ELEMENT_NODE)
return
true;
}
}
return
false;
}

?>

顯示
B b-text
C -> CHILDNODES
D d-text
E
4
richard dot gildx at gmail dot com
12 年前
這個 "hasChildNodes()" 練習非常簡單,使其清晰易懂。或者,您可以將其視為標籤是否為空的檢查。作者:Richard Holm,瑞典。

<?php
$xmldoc
=
'<?xml version="1.0" ?>
<root>
<text>Text</text>
<none/>
<empty></empty>
<space> </space>
</root>'
;

$domdoc=new DOMDocument();
$domdoc->loadXML($xmldoc);

$tag=$domdoc->getElementsByTagName('root')->item(0);
$v=$tag->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo
$tag->tagName.$v."<br/>";

$tag=$domdoc->getElementsByTagName('text')->item(0);
$v=$tag->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo
$tag->tagName.$v."<br/>";

$tag=$domdoc->getElementsByTagName('none')->item(0);
$v=$tag->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo
$tag->tagName.$v."<br/>";

$tag=$domdoc->getElementsByTagName('empty')->item(0);
$v=$tag->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo
$tag->tagName.$v."<br/>";

$tag=$domdoc->getElementsByTagName('space')->item(0);
$v=$tag->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo
$tag->tagName.$v."<br/>";
?>

輸出
root hasChildNodes
text hasChildNodes
none hasNoChildNodes
empty hasNoChildNodes
space hasChildNodes
-5
Anonymous
9 年前
嗨,如果它是動態檔案,而我們無法使用 get elements by tag name,那麼我們要如何印出所有層級標籤的內容?
To Top