我正在尝试删除所有空节点,但代码还会检测图像标记为空的节点。我需要保留带有img标签的节点。此外,我不需要具有空格和其他不可打印字符的节点。这是我目前的代码:
$empties= $xpath->query('//*[not((*))]');
foreach($empties as $empty){
$empty->parentNode->removeChild($empty);
}
我需要这样:
<div class='blah'> </div>
这些留下来
<div class='blah'><img src='bla'/></div>
<div class='blah'>some text</div>
答案 0 :(得分:1)
首先,让我们通过使用更全面的示例来消除歧义:
<div id="d1">
<div id="d2"/>
<div id="d3" class='blah'><img src='bla'/></div>
<div id="d4" class='blah'>some text</div>
<div id="d5" class='blah'> </div>
<div id="d6" class='blah'>
</div>
</div>
,然后强>
//*[not(*) and text()[not(normalize-space())]]
<强>说强> 选择 没有子元素但带有子文本的元素 仅包含空格。
对于上述XML,它会选择d5
和d6
divs
,不 img
,不 d1
到d4
divs
。