4

我必须配置我们的企业搜索引擎,并且文档的索引是通过 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 中的子元素存在问题。比方说,里面有一个跨度标签。如果我选择

//div[@id='content']/*[not(@id='i-do-not-want-this')] 我的结果仍然包括这个跨度内容。所以我想,我需要查询 id="content" 以下没有父 id="i-do-not-want-this" 的所有元素。正确的?

4

1 回答 1

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 的评论

于 2013-10-02T09:50:36.930 回答