【问题标题】:How to select text in HTML tag without a tag around it (JSoup)如何在没有标签的情况下选择 HTML 标签中的文本(JSoup)
【发布时间】:2016-10-25 19:39:12
【问题描述】:

我想选择强标签内的文本,但它下面没有 div...

有没有可能直接用 jsoup 做到这一点?

我的选择尝试(不起作用,选择强标签内的全部内容):

Elements selection = htmlDocument.select("strong").select("*:not(.dontwantthatclass)");

HTML:

<strong>
   I want that text
   <div class="dontwantthatclass">
   </div>
</strong>

【问题讨论】:

    标签: java html dom jsoup


    【解决方案1】:

    看看 jsoup 处理它的各种方法https://jsoup.org/apidocs/org/jsoup/nodes/Element.html。您可以使用remove()removeChild() 等。 您可以做的一件事是使用正则表达式。 这是一个匹配开始和结束标记的示例正则表达式,还附加了&lt;/br&gt; 标记 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】:

      您正在寻找ownText() 方法。

      String txt = htmlDocument.select("strong").first().ownText();
      

      【讨论】:

      • 你的回答比我的好:)
      【解决方案3】:

      我猜你正在使用 jQuery,所以你可以在你的“strong”元素上使用“innerText”属性:

      var selection = htmlDocument.select("strong")[0].innerText;
      

      https://jsfiddle.net/scratch_cf/8ds4uwLL/

      PS:如果你想将检索到的文本包装成一个“强”标签,我认为你必须构建一个新元素,如$('&lt;strong&gt;retrievedText&lt;/strong&gt;');

      【讨论】:

        猜你喜欢
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多