2012-09-12 33 views
1

这是我的代码。使用jSoup解析最内层的html标签

String tags="<html><head></head><body><table><tr><td>1</td></tr><tr><td><table><tr><td>3</td><td>4</td></tr></table></td></tr></table><body></html>"; 
     Document document = Jsoup.parse(tags); 
     for(int i=0;i<document.body().childNodes().size();i++) 
     { 
      if(!document.body().childNodes().get(i).nodeName().startsWith("#")) 
      { 
       System.out.println("1st Level Nodes:"+document.body().childNodes().get(i).nodeName()); 
       while(document.body().childNodes().get(i).childNodes().size()>1) 
       { 
        System.out.println("2nd Level: "+document.body().childNodes().get(i).childNodes().get(0).nodeName()); 
       } 
      } 
     } 

如何解析通过标记返回标记的HTML。循环未覆盖最内层标签。

这是格式良好的html代码。将所有标签解析为最内层。

<html> 
<head></head> 
<body> 
<table> 
    <tr> 
     <td>1</td> 
    </tr> 

    <tr> 
     <td> 
      <table> 
      <tr> 
       <td>3</td> 
       <td>4</td> 
      </tr> 
      </table> 
     </td> 
    </tr> 
</table> 
<body> 
</html> 

我想要得到所有html之间的标签作为html的层次结构,我用html代码显示。所以我喜欢根据父母和孩子的顺序逐个获取所有标签。

+0

使用CSS查询?我不确定你想要做什么。 – gigadot

+0

我想获取所有html之间的标签作为html的层次结构,我用html代码显示。所以我喜欢根据父母和孩子的顺序逐个获取所有标签。 –

回答

0

如果您只需要标签,你可以在这里使用:

String tags = "<html><head></head><body><table><tr><td>1</td></tr><tr><td><table><tr><td>3</td><td>4</td></tr></table></td></tr></table><body></html>"; 
Document doc = Jsoup.parse(tags); 


for(Element e : doc.select("*") // you can use 'doc.getAllElements()' here too 
{ 
    System.out.println(e.tag()); 
} 

输出:在jsoup

#root 
html 
head 
body 
table 
tbody 
tr 
td 
tr 
td 
table 
tbody 
tr 
td 
td