zoukankan      html  css  js  c++  java
  • 递归遍历所有xml的节点及子节点

    import java.io.File;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * 遍历xml所有节点(包括子节点下还有子节点多层嵌套)
     */
    public class TestXML {
    
        public static void main(final String[] args) {
            final TestXML test = new TestXML();
            try {
                test.testGetRoot();
            } catch (final Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * 获取文件的xml对象,然后获取对应的根节点root
         */
        public void testGetRoot() throws Exception {
            final SAXReader sax = new SAXReader();// 创建一个SAXReader对象
            final File xmlFile = new File("C:\Users\.yang\Desktop\ss.xml");// 根据指定的路径创建file对象
            final Document document = sax.read(xmlFile);// 获取document对象,如果文档无节点,则会抛出Exception提前结束
            final Element root = document.getRootElement();// 获取根节点
            getNodes(root);// 从根节点开始遍历所有节点
    
        }
    
        /**
         * 从指定节点Element node开始,递归遍历其所有子节点
         */
        public void getNodes(final Element node) {
            System.out.println("-------开始新节点-------------");
    
            // 当前节点的名称、文本内容和属性
            System.out.println("当前节点名称:" + node.getName());// 当前节点名称
            System.out.println("当前节点的内容:" + node.getTextTrim());// 当前节点内容
            final List<Attribute> listAttr = node.attributes();// 当前节点的所有属性
            for (final Attribute attr : listAttr) {// 遍历当前节点的所有属性
                final String name = attr.getName();// 属性名称
                final String value = attr.getValue();// 属性的值
                System.out.println("属性名称:" + name + "---->属性值:" + value);
            }
    
            // 递归遍历当前节点所有的子节点
            final List<Element> listElement = node.elements();// 所有一级子节点的list
            for (final Element e : listElement) {// 遍历所有一级子节点
                getNodes(e);// 递归
            }
        }
    }

    参考文章:https://blog.csdn.net/sidihuo/article/details/47318723

  • 相关阅读:
    Centos7 keepalived 修改日志路径
    mysql 双主复制 centos7
    CentOs 7 安装mysql5.7.18(二进制版本)
    oracle、mysql新增字段,字段存在则不处理
    mysql+ibatis 批量插入
    oracle+ibatis 批量插入-支持序列自增
    oracle 批量插入-支持序列自增
    sftp上传
    java
    mysql
  • 原文地址:https://www.cnblogs.com/longronglang/p/10555626.html
Copyright © 2011-2022 走看看