2014-06-09 31 views
0

我在想,如果像这样的东西是可能的Jsoup的HTML页面。用jsoup标记深度和HTML DOM的最大标记deph

HTML文档,其中公司及员工们认为HTML标签:

<company> 
     <staff id="1"> 
       <firstname>George</firstname> 
       <lastname>Deren</lastname> 
       <nickname>Revan</nickname> 
       <salary>50000</salary> 
       <age>24</age> 
     <extra> 
      <test>123</test> 
     </extra> 

例如支架将包含特定标签的DOM深度。

company[1] 
staff[2] 
firstname[3] 
lastname[3] 
nickname[3] 
salary[3] 
age[3] 
extra[3] 
test[4] 

最深层次是:4

回答

1

您可以使用节点访问此。它具有深度值。假设你的XML存储在data.xml文件中,那么这个程序打印你想要的东西

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Node; 
import org.jsoup.nodes.TextNode; 
import org.jsoup.parser.Parser; 
import org.jsoup.select.NodeVisitor; 

public class JsoupDepth { 

    public static void main(String[] args) { 
     File input = new File("data.xml"); 
     try { 
      Document doc = Jsoup.parse(new FileInputStream(input), "UTF-8", "", Parser.xmlParser()); 
      doc.traverse(new NodeVisitor() { 
       public void head(Node node, int depth) { 
        if(!(node instanceof TextNode)) { 
         System.out.println(node.nodeName() + "[" + depth + "]"); 
        } 
       } 
       public void tail(Node node, int depth) { 
       } 
      }); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 
+0

谢谢,真的有帮助。 –