html - 如何在没有来自类 "B"的第一个 div 的情况下查找所有 div 元素中的文本

标签 html xml xpath

我正在 try catch 所有 div 元素中的文本,而不是第一个 div 的文本,它是类“B”的子元素

我整天都在敲我的头,但我似乎无法让它正常工作。

<div class="A">
    Text 1
</div>
<div class="B">
    <div>
        Welcome 1
    </div>
    <div>
        Welcome 2
    </div>
</div>

这是我使用的表达方式:

//body//text()[not (//div[@class='B']/div[1])]

但它没有返回任何结果。

最佳答案

通过给它一个根元素使 XML 格式正确后,

<div>
  <div class="A">
    Text 1
  </div>
  <div class="B">
    <div>
        Welcome 1
    </div>
    <div>
        Welcome 2
    </div>
  </div>
</div>

这里是所有 div 元素,它们没有 div 后代,也不是第一个有父元素的 div具有“B”的 @class 属性值:

//div[not(descendant::div) and not(../@class='B' and position() = 1)]

上面的 XPath 选择了这两个 div 元素:

<div class="A">
    Text 1
  </div>

<div>
        Welcome 2
    </div>

因此您可以使用此 XPath 获取关联的 text() 节点:

//div[not(descendant::div) and not(../@class='B' and position() = 1)]/text()

...这将选择:

Text 1


    Welcome 2

未按要求选择 Welcome 1

关于html - 如何在没有来自类 "B"的第一个 div 的情况下查找所有 div 元素中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34864650/

相关文章:

python - 如何从 YouTube 页面抓取 View

xpath - 在OSGi容器中运行时,如果Class对象的classloader为null,那意味着什么?

html - 如何将 CSS 包含到 IntraWeb 元素中?

javascript - href 使用 Angularjs 和 Twitter Bootstrap 导致意外的页面重新加载

html - 添加填充会使文本区域输入在某些操作系统上不可见

php - 根据最新观察添加一行带有彩色单元格的文本

html - 如何在 HTML/CSS 中裁剪 SVG 文件

java - javax StreamSource 的目的是什么

C# XML反序列化问题

python - xPath:从父节点,下降到符合条件的子子子子节点?