从HTML获取内部标记

时间:2014-06-04 08:57:41

标签: java html jsoup

我是JSoup的新手,所以帮助会很棒。在这个official tutorial中,我们可以了解到下面的代码将内部标记变为String:

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html);
Element link = doc.select("a").first();

String text = doc.body().text(); // "An example link"
String linkHref = link.attr("href"); // "http://example.com/"
String linkText = link.text(); // "example""

String linkOuterH = link.outerHtml(); 
    // "<a href="http://example.com"><b>example</b></a>"
String linkInnerH = link.html(); // "<b>example</b>"

但是如果HTML字符串非常长并因此包含很多标签会怎样?这种情况有限制吗?我怎样才能创建一个包含&#34; a&#34;

的所有内部标签的String数组或arraylist

2 个答案:

答案 0 :(得分:0)

  

我怎么能创建一个包含所有内部的String的数组或arraylist   &#34; a&#34;

的标签

您可以从doc返回Elements。此处Elements是一个包含所有<a>标记的数组。

   Document doc = Jsoup.parse(html);
   Elements allAnchorTags = doc.select("a");

   System.out.println(allAnchorTags); // It will print all tag string.

答案 1 :(得分:0)

Jsoup类似于DOM解析器。它将整个html发送到树结构。所以它可以解析的大小取决于你配置的java堆大小。

至于获取标签有几种方法。最简单的方法是document.select()方法。就像Masud的回答一样。

Document document = Jsoup.parser(html);
List<String> tags = new ArrayList<String>();
for(Element e : document.select("a")){
    tags.add(e.tagName());
}
System.out.println("The tags = " + tags);

//If you want it as array
String[] tagsArray = tags.toArray(new String[tags.size()]);

您可以参考此答案以获取更多选项How to Count total Html Tags using Jsoup