我想选择strong-tag中的文本,但不包含div ...
是否有可能直接使用jsoup进行此操作?
我尝试选择(不起作用,选择强标签内的完整内容):
Elements selection = htmlDocument.select("strong").select("*:not(.dontwantthatclass)");
HTML:
<strong>
I want that text
<div class="dontwantthatclass">
</div>
</strong>
答案 0 :(得分:7)
您正在寻找ownText()方法。
String txt = htmlDocument.select("strong").first().ownText();
答案 1 :(得分:1)
看看jsoup必须处理的各种方法https://jsoup.org/apidocs/org/jsoup/nodes/Element.html。您可以使用remove()
,removeChild()
等。
你可以做的一件事是使用正则表达式。
下面是一个示例正则表达式,它匹配起始和结束标记,并附加</br>
标记
https://www.debuggex.com/r/1gmcSdz9s3MSimVQ
所以你可以这样做
selection.replace(/<([^ >]+)[^>]*>.*?<\/\1>|<[^\/]+\/>/ig, "");
您可以进一步修改此正则表达式以匹配大多数情况。
您可以做的另一件事是,使用javascript或vbscript进一步处理您的变量: -
Elements selection = htmlDocument.select("strong")
jquery代码: -
var removeHTML = function(text, selector) {
var wrapped = $("<div>" + text + "</div>");
wrapped.find(selector).remove();
return wrapped.html();
}
使用正则表达式,您可以使用jsoup的ownText()方法来获取和删除不需要的字符串。
答案 2 :(得分:0)
我猜你正在使用jQuery,所以你可以在“strong”元素上使用“innerText”属性:
var selection = htmlDocument.select("strong")[0].innerText;
https://jsfiddle.net/scratch_cf/8ds4uwLL/
PS:如果你想将检索到的文本包装成“强”标签,我认为你必须建立一个像$('<strong>retrievedText</strong>');
这样的新元素