【问题标题】:Tag depth and max tag deph of HTML DOM with jsoup使用 jsoup 的 HTML DOM 的标签深度和最大标签深度
【发布时间】:2014-07-30 02:19:16
【问题描述】:

我想知道对于 html 页面的 Jsoup 是否可以实现类似的功能。

将公司和员工视为 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

【问题讨论】:

    标签: jsoup


    【解决方案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();
            }
        }
    
    }
    

    【讨论】:

    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2021-10-08
    • 2012-12-09
    • 2015-04-18
    • 2018-10-15
    • 2016-11-13
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多