【问题标题】:How to calculate the number of occurrences of individual HTML tags in ? (Java)如何计算单个 HTML 标签的出现次数? (爪哇)
【发布时间】:2018-04-15 15:56:39
【问题描述】:

我有下面的字符串,它是 HTTP 响应的正文,我需要计算单个 HTML 标记的出现次数,并使用 Java 按实例数对它们进行排序。

 "<div><p><span class="lede">Today, the European </span>Space Agency&apos;s Rosetta spacecraft will engage its thrusters for one final maneuver: a suicidal plunge toward the comet it has been orbiting for two years and chasing for a decade. After Rosetta collides with comet 67P/Churyumov-Gerasimenko....."

请有人帮忙 提前致谢

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: java html count tags


【解决方案1】:

使用JSoup 之类的库来获取所有文档元素并根据需要对其进行操作。

您可以为每个标签和出现次数创建一个HashMap&lt;String, Long&gt;。然后您可以递归地迭代 JSoup Document 的所有元素,在每次通过时更新地图,最后对 HashMap 进行排序。

不要忘记用反斜杠转义引号。 String html = "&lt;div class=\"like-this\"&gt;div content&lt;/div&gt;";

例如(未测试)类似

Map<String, Long> counts = new HashMap<>();
String html = " your html string goes here ";    

Document doc = Jsoup.parse(html);

Elements elements = document.body().select("*");
recursiveWalk(elements, counts);

// your map here, sort it

// method to walk the document
private void recursiveWalk(List<Element> elements, Map<String, Long> counts) {
    for (Element el : elements) {
        String tag = el.tagName();
        long number = counts.getOrDefault(tag, 0L) + 1;
        counts.put(tag, number);
        recursiveWalk(elements.children(), counts);
    }
}

【讨论】:

  • 它对我有用,但是当文档的内容有诸如“body”、“div”之类的词时,它也将它们视为标签,而它们只是句子的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 2019-03-19
相关资源
最近更新 更多