我需要获得每个节点的所有父节点。以下是我的代码的一部分:
$dom = new DOMDocument;
$dom->loadHTMLfile($myvar);
$allElements = $dom->getElementsByTagName('*');
foreach($allElements as $element){
print $element->tagName;
if(get_parent_class($element) !== NULL){
print ' parent is '.$element->parentNode->tagName.'<br>';
}
else{
print '<br>';
}
}
$ myvar =&#39; sample.html&#39;它看起来像这样:
<html>
<body>
<div id="mango">
This is the mango div. It has some text and a form too.
<form>
<input type="text" name="first_name" value="Yahoo" />
<input type="text" name="last_name" value="Bingo" />
</form>
<table class="inner">
<tr><td>WEW</td><td>Sky</td></tr>
</table>
</div>
<table id="data" class="outer">
<tr><td>Happy</td><td>Sky</td></tr>
<tr><td>Sad</td><td>Sky</td></tr>
<tr><td>Grumpy</td><td>Sky</td></tr>
<tr><td>Horny</td><td>Sky</td></tr>
<tr><td>Fappy</td><td>Sky</td></tr>
</table>
</body>
</html>
输出的前几行如下所示: sample.html HTML 注意:未定义的属性:第27行的C:\ xampp \ htdocs \ tut \ form.php中的DOMDocument :: $ tagName 父母是 body parent是html div parent是body
不知何故,它仍然在$element = <html>
时进入if子句。我希望它不要输入if语句,因为它没有父节点。提前谢谢。
答案 0 :(得分:3)
看到你的HTML后,试一试,我想我有一个简单的解决方案:
if(!empty($element->parentNode->tagName))
试试。
答案 1 :(得分:0)
您可以使用instanceOf
:
if ($element->parentNode instanceOf DOMElement) {
文档元素的父节点是文档节点本身。所以它是一个DOMDocument,一个DOMNode,但不是DOMElement。