【发布时间】:2017-02-20 09:32:45
【问题描述】:
假设我有以下代码要使用 JSoup 解析
<body>
<div id="myDiv" class="simple" >
<p>
<img class="alignleft" src="myimage.jpg" alt="myimage" />
I just passed out of UC Berkeley
</p>
</div>
</body>
问题是,仅给定一个关键字“Berkeley”,是否有更好的方法可以在包含此关键字的 html 中找到元素/XPath(或它的列表,如果该关键字多次出现)作为其文本的一部分。
我无法事先查看 html,并且仅在运行时可用。
我目前的实现 - 使用 Java-Jsoup,遍历 body 的孩子,并获取每个孩子的“ownText”和文本,然后深入到他们的孩子以缩小 html 元素。我觉得这很慢。
【问题讨论】:
-
如果关键字只是文本字段的一部分,而不是 html 标记中的一部分,那么我认为您必须搜索文本字段,除非有关键字出现的模式(例如。出现在 "myDiv" 或 "alignleft")
-
您是否只是想获取所有可能包含关键字“berkley”的元素?
-
@NickBell - 关键字将成为文本字段的一部分,并且无法识别任何模式,因为 html 将是动态的并且无法预测格式。
-
@testerjoe2 - 是的
-
然后查看 giles 的回答。只需使用他回答的这一部分 -
//*[contains(normalize-space(), "Berkeley")]
标签: java html xpath jsoup html-parsing