• 递归遍历所有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

  • 相关阅读:
    Python入门系列——第20篇
    Python入门系列——第19篇
    windows下python使用pip命令安装builtwith库时,遇到的utf-8问题的解决
    Python入门系列——第18篇
    在相同的主机上创建一个duplicate数据库
    duplicate database的时候,rman连接 auxiliary database的后状态不正确
    使用duplicate target database ... from active database复制数据库
    RHEL7
    Oracle 监听器日志文件过大导致监听异常
    TNS-01251: Cannot set trace/log directory under ADR
  • 原文地址:https://www.cnblogs.com/longronglang/p/10555626.html
Copyright © 2020-2023  润新知