递归遍历所有xml的节点及子节点

前端之家收集整理的这篇文章主要介绍了递归遍历所有xml的节点及子节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
import java.io.File;
 java.util.List;

 org.dom4j.Attribute;
 org.dom4j.Document;
 org.dom4j.Element;
 org.dom4j.io.SAXReader;

/**
 * 遍历xml所有节点(包括子节点下还有子节点多层嵌套)
 */
public class TestXML {

    static void main(final String[] args) {
        final TestXML test = new TestXML();
        try {
            test.testGetRoot();
        } catch ( Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    
     * 获取文件的xml对象,然后获取对应的根节点root
     */
    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开始,递归遍历其所有子节点
     void getNodes( 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
        final Element e : listElement) { 遍历所有一级子节点
            getNodes(e); 递归
        }
    }
}

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

猜你在找的Java相关文章