如何从<;部门>;标记java

如何从<;部门>;标记java,java,html,extract,Java,Html,Extract,我有一个严重的问题。 我想从标签中提取内容,例如: <div class="main-content"> <div class="sub-content">Sub content here</div> Main content here </div> 此处的子内容 这里的主要内容 我预期的产出是: 此处的子内容此处的主要内容 我尝试过使用正则表达式,但结果并不令人印象深刻。 通过使用: Pattern.compile("&

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

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

此处的子内容
这里的主要内容
我预期的产出是:

此处的子内容
此处的主要内容

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

Pattern.compile("<div>(\\S+)</div>");
Pattern.compile(“(\\S+”);
将返回第一个标记之前的所有字符串
那么,有人能帮我吗?


<div class="main-content" id="mainCon">
    <div class="sub-content" id="subCon">Sub content here</div>
 Main content here </div>
此处的子内容 这里的主要内容
如果您想得到您提到的结果,请使用此代码

使用
document.getElementById(“mainCon”).innerHTML
它将在这里提供主要内容以及子div,但您可以解析该内容


同样,对于sub-div,您可以使用上面的代码sniplet,即
document.getElementById(“subco”).innerHTML

我建议不要使用正则表达式来解析HTML。您可以通过以下方式轻松完成您的要求:


作为对注释的响应:如果您有嵌套的元素,并且希望为每个元素获取自己的文本,那么可以使用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解析器,请参阅以下问题::)@kyo21:是的,您为每个div提供手动id,也可以使用javascript动态提供id。呃……如果我想将每个内容添加到数组中怎么办?有什么建议吗?thanks@kyo21:我在答案中添加了一些代码,以回答您关于将
div
内容放入数组的问题。哦,对不起,我需要您再次解释,我使用method element.text()获取标记中的所有文本,我在div content中添加了标记,但结果是:-这里的子内容这里的主内容这里的子内容这里的子内容这是怎么发生的?@kyo21:
text()
获取此元素及其所有子元素的组合文本。请参阅@kyo21:我不太确定您现在有什么html,但请注意,如果您有两个嵌套的
div
标记,每个标记都包含文本,并且使用
text()
方法,那么最里面的
div
标记的文本将打印两次:当您在外部
div
上调用
text()
时打印一次,当您在内部
div
上调用它时(for循环处理所有
div
标记)。我希望这有帮助。
    String[] divsTexts = new String[divs.size()];
    for (int i = 0; i < divs.size(); i++) {
        divsTexts[i] = divs.get(i).ownText();
    }
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>
<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