Android Jsoup输出的Hashmap

Android Jsoup输出的Hashmap,android,hashmap,jsoup,Android,Hashmap,Jsoup,我有一个html文件,看起来像: <html> <body> <h3>title 1</h3> <a>'a paragraph here'</a> <a>'a paragraph here'</a> <a>'a paragraph here'</a> <h3><b>title 2</b></h3> <a>'a para

我有一个html文件,看起来像:

<html>
<body>
<h3>title 1</h3>
<a>'a paragraph here'</a>
<a>'a paragraph here'</a>
<a>'a paragraph here'</a>
<h3><b>title 2</b></h3>
<a>'a paragraph here'</a>
<a>'a paragraph here'</a>
<a>'a paragraph here'</a>
</body></html>

我不明白你所说的正确格式输出是什么意思,但我想至少我可以帮助你回答问题的第一部分。这就是如何使用h3标记文本作为键,列表中的以下a标记作为值来构建地图:

String html = ""
    +"<html>"
    +"<body>"
    +"<h3>title 1</h3>"
    +"<a>'a paragraph 1 here'</a>"
    +"<a>'a paragraph 2 here'</a>"
    +"<a>'a paragraph 3 here'</a>"
    +"<h3><b>title 2</b></h3>"
    +"<a>'a paragraph 4 here'</a>"
    +"<a>'a paragraph 5 here'</a>"
    +"<a>'a paragraph 6 here'</a>"
    +"</body></html>";
Document doc = Jsoup.parse(html);

Elements as = doc.select("a");
String currentTitle = null;
Map<String,List<String>> mas = new LinkedHashMap<>();
for (Element a : as){
    if ("h3".equals(a.previousElementSibling().tagName())){
        currentTitle = a.previousElementSibling().text();
        mas.put(currentTitle, new ArrayList<String>());
    }
    mas.get(currentTitle).add(a.text());
}

System.out.println(""+mas);
String html=“”
+""
+""
+“标题1”
+“‘此处为第1段’”
+“‘此处第2段’”
+“‘此处第3段’”
+“标题2”
+“‘此处第4段’”
+“‘此处第5段’”
+“‘此处第6段’”
+"";
Document doc=Jsoup.parse(html);
元素as=文件选择(“a”);
字符串currentTitle=null;
Map mas=新LinkedHashMap();
for(元素a:as){
如果(“h3”.equals(a.previousElementSibling().tagName())){
currentTitle=a.previousElementSibling().text();
mas.put(currentTitle,newArrayList());
}
get(currentTitle).add(a.text());
}
系统输出打印项次(“+mas);
上面的程序使用
previousElementSibling()
方法来标识h3标记(如果它直接位于a元素之前)。其余的应该很容易理解


注意,我使用LinkedHashMap来更改h3标记的原始顺序

您所说的正确格式化输出是什么意思?那么
Html.frmHtml
在这种情况下做什么呢?请清楚地说明你对结果的期望。@Lukschy谢谢你今天给我的回复。
String html = ""
    +"<html>"
    +"<body>"
    +"<h3>title 1</h3>"
    +"<a>'a paragraph 1 here'</a>"
    +"<a>'a paragraph 2 here'</a>"
    +"<a>'a paragraph 3 here'</a>"
    +"<h3><b>title 2</b></h3>"
    +"<a>'a paragraph 4 here'</a>"
    +"<a>'a paragraph 5 here'</a>"
    +"<a>'a paragraph 6 here'</a>"
    +"</body></html>";
Document doc = Jsoup.parse(html);

Elements as = doc.select("a");
String currentTitle = null;
Map<String,List<String>> mas = new LinkedHashMap<>();
for (Element a : as){
    if ("h3".equals(a.previousElementSibling().tagName())){
        currentTitle = a.previousElementSibling().text();
        mas.put(currentTitle, new ArrayList<String>());
    }
    mas.get(currentTitle).add(a.text());
}

System.out.println(""+mas);