xpath - 删除空节点,但保留带有图像标签的节点

标签 xpath domdocument

我正在尝试删除所有空节点,但是代码也将带有image标签的节点检测为空。我需要保留带有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>

最佳答案

首先,让我们使用更全面的示例来消除歧义:

<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,它将选择d5d6 divs,而不是img,而不是通过d1 d4divs

关于xpath - 删除空节点,但保留带有图像标签的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955169/

相关文章:

c# - XDocument 的简单搜索

xml - 使用 XPath/Sitecore 查询获取层次结构中特定级别的祖先

php - 来自 $_GET 的数字未使用 php 读入 simplexml xpath 查询

php - 使用 PHP DOMDocument 将样式标签添加到头部

function - Xalan 2.7 中缺少字符串函数,使用 java.lang.String 代替?

wpf - 在 WPF 中动态更改 XPath 绑定(bind)

php - 在 PHP 中使用 DOMDocument 进行缩进

php - 为什么 cURL 返回一个空字符串?

PHP:每当我尝试编写 UTF-8 时使用 DOMDocument,它会写入它的十六进制表示法

php - 如何在 PHP 中使用 DOMDocument 检测 XML 元素是否为空?