我正在尝试为我的Android应用程序解析这个HTML之王:
<table>
<p> blablabla </p>
<p> bliblibli </p>
</table>
<p> Hello </p>
<p> Hello2 </p>
....
<p> Hellon </p>
<table>
<p> blablabla </p>
<p> bliblibli </p>
</table>
使用getElementsByTag(“table”)然后getElementsByTag(“p”)很容易获得表标记的内部。
但是那个“你好”部分呢,我不知道有多少行?
我的第一个想法是首先使用string.split(“table”)裁剪字符串,但它是awfull的王者。
感谢您的帮助。
答案 0 :(得分:2)
对于无效示例,这很难,在JSoup解析之后,这些文档如下所示:
<html>
<head></head>
<body>
<p> blablabla </p>
<p> bliblibli </p>
<table>
</table>
<p> Hello </p>
<p> Hello2 </p> ....
<p> Hellon </p>
<p> blablabla </p>
<p> bliblibli </p>
<table>
</table>
</body>
</html>
所有段落都在第一级,表格为空。
正确的表格示例
<table>
<tr>
<td>
<p> blablabla </p>
</td>
<td>
<p> bliblibli </p>
</td>
</tr>
</table>
修复示例HTML之后,事情变得容易了
public static void main(String[] args) {
String html = "<table><tr><td>\n" +
" <p> blablabla </p>\n" +
" <p> bliblibli </p>\n" +
"</td></tr></table>\n" +
"<p> Hello </p>\n" +
"<p> Hello2 </p>\n" +
"....\n" +
"<p> Hellon </p>\n" +
"<table><tr><td>\n" +
" <p> blablabla </p>\n" +
" <p> bliblibli </p>\n" +
"</td></tr></table>";
Elements p1 = Jsoup.parse(html).select("body > p");
System.out.println(p1.html());
}
结果
Hello
Hello2
Hellon
只需使用组合>
,就像魅力一样:)
父级&gt;孩子:从父母那里直接下降的子元素,例如div.content&gt; p找到p个元素;和身体&gt; *找到身体标签的直接孩子
答案 1 :(得分:0)
这肯定会帮助你
Element content = doc.select("p").get(0);
content.tagName();
str=content.text();
Log.d("Check", str + content.tagName());
在这个你可以循环get()方法..