使用Jsoup,选择文本后面的元素

时间:2016-05-06 05:17:02

标签: jsoup

HTML页面如下:

bananas
<myTag ...> ... </myTag>

myTag代码没有idname。如果仅提供文本bananas之后的信息,我该如何选择它?

当然,您可以通过计算所有myTag元素的展示位置顺序来选择代码,但在没有idname或任何其他属性的情况下,我要求最干净的方式

1 个答案:

答案 0 :(得分:0)

以下是我可以看到的一些选项:

选项1:使用CSS查询

Jsoup CSS引擎不允许选择文本节点。但是,当且仅当 myTagbananas具有相同父元素时,才能使用此选项

:containsOwn(bananas) > myTag

DEMO

<强> 说明

:containsOwn(bananas) /* Select any element (1) having a TextNode as direct 
                         child containing bananas */
> myTag               /* Select child elements of (1) with tag name myTag */

选项2:访问所有节点

此选项涉及更多代码编写。您可以分三步采取行动:

  1. 手动访问文档中的每个节点(请参阅NodeVisitor)。
  2. 如果找到TextNode且包含bananas
    然后转到3.
    ELSE访问下一个节点。
  3. 如果TextNode有一个名为myTag的兄弟节点 然后找到了myTag节点;访问下一个节点
    ELSE访问下一个节点。