如何从
标签java中提取内容

2024-04-17

我有一个严重的问题。 我想从标签中提取内容,例如:

<div class="main-content">
    <div class="sub-content">Sub content here</div>
      Main content here </div>

我期望的输出是:

子内容在这里
主要内容在这里

我尝试过使用正则表达式,但结果并不那么令人印象深刻。 通过使用:

Pattern.compile("<div>(\\S+)</div>");

将返回第一个 标记之前的所有字符串
那么,有人可以帮助我吗?


我建议避免使用正则表达式来解析 HTML。您可以使用以下命令轻松完成您所要求的操作Jsoup http://jsoup.org/:

public static void main(String[] args) {
    String html = "<html><head/><body><div class=\"main-content\">" +
            "<div class=\"sub-content\">Sub content here</div>" +
            "Main content here </div></body></html>";
    Document document = Jsoup.parse(html);
    Elements divs = document.select("div");
    for (Element div : divs) {
        System.out.println(div.ownText());
    }
}

回复评论:如果你想把内容div元素放入数组中String您可以简单地执行以下操作:

    String[] divsTexts = new String[divs.size()];
    for (int i = 0; i < divs.size(); i++) {
        divsTexts[i] = divs.get(i).ownText();
    }

回应评论:如果您有嵌套元素并且想要为每个元素获取自己的文本,那么您可以使用 jquery 多选择器语法。这是一个例子:

public static void main(String[] args) {
    String html = "<html><head/><body><div class=\"main-content\">" +
            "<div class=\"sub-content\">" +
            "<p>a paragraph <b>with some bold text</b></p>" +
            "Sub content here</div>" +
            "Main content here </div></body></html>";
    Document document = Jsoup.parse(html);
    Elements divs = document.select("div, p, b");
    for (Element div : divs) {
        System.out.println(div.ownText());
    }
}

上面的代码将解析以下 HTML:

<html>
<head />
<body>
<div class="main-content">
<div class="sub-content">
<p>a paragraph <b>with some bold text</b></p>
Sub content here</div>
Main content here</div>
</body>
</html>

并打印以下输出:

Main content here
Sub content here
a paragraph
with some bold text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从
标签java中提取内容 的相关文章