(PHP 5)
DOMNode::hasChildNodes — Checks if node has children
This function checks if the node has children.
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Personally I think using a simple:[code]if($DOMNode->childNodes <>0){}[/code] works better.
This function is a bit tricky. If you want to find XML childnodes it is useless. You need to create a work-around:
<?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;
}
?>
shows:
B b-text
C -> CHILDNODES
D d-text
E
<?php
$doc = new DOMDocument;
$node = $doc->createElement("FirstMain", "First Main Node. This have child");
$doc->appendChild($node);
$childnode = $doc->createElement("childnode", "child node");
$node->appendChild($childnode);
$secondnode = $doc->createElement("SecondMain", "First Main Node. This don't have child");
$doc->appendChild($secondnode);
$doc->saveXML();
$nodeElmt = $doc->getElementsByTagName("FirstMain");
/*
if given as $nodeElmt = $doc->getElementsByTagName("childnode");
the output would be "This node has childnodes"
if given as $nodeElmt = $doc->getElementsByTagName("SecondMain");
the output would be "This node has no childnodes"
*/
foreach($nodeElmt as $nodeElmt)
{
if($nodeElmt->hasChildNodes())
{
echo "This node has childnodes";
}
else
{
echo "This node has no childnodes";
}
}
?>
- - - - - - - - - - - - - -
Output:
This node has childnodes
- - - - - - - - - - - - - -