gpt4 book ai didi

java - 使用 Jsoup 存在 HTML 标签

转载 作者:行者123 更新时间:2023-12-01 14:50:40 25 4
gpt4 key购买 nike

使用 Jsoup 可以轻松计算特定标签在文本中出现的次数。例如,我试图查看给定文本中 anchor 标记出现的次数。

    String content = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>. <p>An <a href='http://example.com/'><b>example</b></a> link.</p>. <p>An <a href='http://example.com/'><b>example</b></a> link.</p>. <p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(content);
Elements links = doc.select("a[href]"); // a with href
System.out.println(links.size());

这给了我4的计数。如果我有一个句子,并且我想知道该句子是否包含任何html标签,可以使用Jsoup吗?谢谢。

最佳答案

使用正则表达式可能会更好,但如果您确实想使用 JSoup,那么您可以尝试匹配所有元素,然后减去 4,因为 JSoup 会自动添加四个元素,即首先添加根元素元素,然后是 <html> , <head><body>元素。

这可能看起来像:

// attempt to count html elements in string - incorrect code, see below 
public static int countHtmlElements(String content) {
Document doc = Jsoup.parse(content);
Elements elements = doc.select("*");
return elements.size()-4;
}

但是,如果文本包含 <html>,则会产生错误结果。 , <head><body> ;比较结果:

// gives a correct count of 2 html elements
System.out.println(countHtmlElements("some <b>text</b> with <i>markup</i>"));
// incorrectly counts 0 elements, as the body is subtracted
System.out.println(countHtmlElements("<body>this gives a wrong result</body>"));

因此,要使这项工作正常进行,您必须单独检查“magic”标签;这就是为什么我觉得正则表达式可能更简单。

更多失败的尝试使这项工作有效:使用 parseBodyFragment而不是parse没有帮助,因为 JSoup 会以相同的方式对其进行清理。一样,算作doc.select("body *");省去了减去 4 的麻烦,但如果 <body> 仍然会产生错误的计数。参与。仅当您有一个应用程序且您确信不存在 <html> , <head><body>元素存在于要检查的字符串中,它可能在该限制下工作。

关于java - 使用 Jsoup 存在 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901828/

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