Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从HTML获取内部标记_Java_Html_Jsoup - Fatal编程技术网

Java 从HTML获取内部标记

Java 从HTML获取内部标记,java,html,jsoup,Java,Html,Jsoup,我是JSoup的新手,所以能帮上忙就好了。在这里,我们可以了解到下面的代码将内部标记作为字符串: 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 t

我是JSoup的新手,所以能帮上忙就好了。在这里,我们可以了解到下面的代码将内部标记作为字符串:

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>"
String html=“链接。

”; Document doc=Jsoup.parse(html); Element link=doc.select(“a”).first(); 字符串text=doc.body().text();//“示例链接” 字符串linkHref=link.attr(“href”);//"http://example.com/" 字符串linkText=link.text();//“示例” 字符串linkOuterH=link.outerHtml(); // "" 字符串linkInnerH=link.html();/“示例”
但是如果HTML字符串非常长,因此包含很多标记,该怎么办?在这种情况下有限制吗?我如何制作一个包含所有“a”内部标记的字符串数组或arraylist

?

如何生成包含所有内部元素的字符串数组或arraylist “a”的标签

您可以从文档返回
元素
。这里的
元素
是一个包含所有
标记的数组

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

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

Jsoup类似于DOM解析器。它将整个html转换为一个树结构。因此,它可以解析的大小取决于您配置的java堆大小

至于获得标签有几种方法。最简单的方法是
document.select()
method。就像马苏德的答案一样

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()]);
documentdocument=Jsoup.parser(html);
列表标记=新的ArrayList();
对于(元素e:document.select(“a”)){
tags.add(e.tagName());
}
System.out.println(“标签=”+标签);
//如果您希望它作为数组
String[]tagsArray=tags.toArray(新字符串[tags.size()]);

您可以参考此答案了解更多选项

,然后如何将元素转换为数组或字符串列表?假设字符串[]的每个值都是每个“a”标记的内容。由于e.tagName()检索始终为“a”的标记的名称,我将其更改为e.html()以获取内部标记,现在它似乎正在工作。谢谢!