xpath:跳过具有给定id的子节点

时间:2013-10-02 09:49:11

标签: xpath

我必须配置我们的企业搜索引擎,文档的索引是通过xpath选择器完成的。 在当前设置中有一个xpath

.//div[@id='content']

它基本上选择了网站主要部分的所有元素。同时还有一个额外的div包含了很多废话,所以我试图修改这个xpath来跳过这个div-tag。我正在努力处理有关“不”的文件,但到目前为止还没有运气。

<div id="content">
  <div id="i-want-this">
   ...
  </div>
  <div id="i-do-not-want-this">
   <span>foo</span>
  </div>
  <div id="i-want-this-too">
   ...
  </div>
</div>

虽然我看到评论中的提示到目前为止帮助了我,但我仍然有一个问题,我想跳过div-tag中的子元素。比方说,里面有一个span-tag。如果我选择

// DIV [@ ID = '内容'] / * [没有(@ ID = 'I-DO-不想学这个')] 我的结果仍然包括这个跨度内容。所以我想,我需要查询id =“content”以下的所有元素,这些元素没有父ID =“我不想要这个”。正确?

1 个答案:

答案 0 :(得分:7)

使用以下查询。它将选择id不是i-do-not-want-this的所有子元素。

//div[@id='content']/*[@id != 'i-do-not-want-this']

或 - 相同的逻辑 - 使用ǹot()函数(感谢@paul_t)

//div[@id='content']/*[not(@id='i-do-not-want-this')]

<强>更新

当我说相同的逻辑时,这是不正确的。请访问@IanRoberts的评论