gpt4 book ai didi

Java Jsoup - 元素未从元素中删除

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:06 26 4
gpt4 key购买 nike

我将从头开始,有这样的 html 模式:

<div id="post_message_(some numeric id)">
<div style="some style things">
<div class="smallfont" style="some style">useless text</div>
<table cellpading="6" cellspaceing=.......> a lot of text inside i dont need</table>
</div>
Text i need
</div>

那些带有样式的 div 和那个表格是可选的,有时只是

<div id="post">
Text i need
</div>

我想将该文本解析为字符串。这是我正在使用的代码

Elements divsInside = element.getElementById("post_message_" + id).getElementsByTag("div");
for(Element div : divsInside) {
if(div != null && div.attr("style").equals("margin:20px; margin-top:5px; ")) {
System.out.println(div.html());
div.remove();
System.out.println("div removed");
}
}

我添加了这些打印行来检查它是否找到它们,是的,它确实找到了正确的打印行,但稍后当我将其解析为字符串时:

String message = Jsoup.parse(divsInside.html().replaceAll("(?i)<br[^>]*>", "br2n")).text()
.replaceAll("br2n", "\n");

由于某些原因,字符串再次包含所有删除的内容。

我尝试通过迭代器删除它们,或者通过索引完全删除元素,但结果是相同的。

最佳答案

所以你想获得我需要的文本。使用 ElementownText() 方法,该方法仅获取此元素拥有的文本;未获取所有子项的组合文本

 private static void test(String htmlFile) {
File input = null;
Document doc = null;
Element specificIdDiv = null;

try {
input = new File(htmlFile);
doc = Jsoup.parse(input, "ASCII", "");
doc.outputSettings().charset("ASCII");
doc.outputSettings().escapeMode(EscapeMode.base);

/** Get Element id = post_message_1 **/
specificIdDiv = doc.getElementById("post_message_1");

if (specificIdDiv != null ) {
System.out.println("content: " + specificIdDiv.ownText());
}
} catch (Exception e) {
e.printStackTrace();
}
}

关于Java Jsoup - 元素未从元素中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com