JSoup - 解析简单的HTML

时间:2014-01-21 18:49:10

标签: android parsing jsoup

我正在尝试为我的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的王者。

感谢您的帮助。

2 个答案:

答案 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()方法..