递归遍历所有xml的节点及子节点
2015-08-06 16:22
531 查看
遍历所有xml的节点及子节点,dom4j
xml:
over。
输出:
-------开始新节点-------------
当前节点名称:root
当前节点的内容:
属性名称:comment---->属性值:ss
属性名称:simversion---->属性值:3.0
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:1
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container1_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:2
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container1_1_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:3
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container_2
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:4
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:5
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_2
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:6
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:7
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_2_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:8
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:9
属性名称:type---->属性值:readOnly
其他dom4j见/article/1788436.html
。
package test.floatd; 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);// 递归 } } }
xml:
<?xml version="1.0" encoding="UTF-8"?> <root comment="ss" simversion="3.0"> <container comment="container_1" type="node"> <variable address="1" type="readOnly"/> <container comment="container1_1" type="node"> <variable address="2" type="readOnly"/> <container comment="container1_1_1" type="node"> <variable address="3" type="readOnly"/> </container> </container> </container> <container comment="container_2" type="node"> <variable address="4" type="readOnly"/> <container comment="2_1" type="node"> <variable address="5" type="readOnly"/> </container> <container comment="2_2" type="node"> <variable address="6" type="readOnly"/> <variable address="7" type="readOnly"/> <container comment="2_2_1" type="node"> <variable address="8" type="readOnly"/> <variable address="9" type="readOnly"/> </container> </container> </container> </root>
over。
输出:
-------开始新节点-------------
当前节点名称:root
当前节点的内容:
属性名称:comment---->属性值:ss
属性名称:simversion---->属性值:3.0
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:1
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container1_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:2
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container1_1_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:3
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:container_2
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:4
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:5
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_2
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:6
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:7
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:container
当前节点的内容:
属性名称:comment---->属性值:2_2_1
属性名称:type---->属性值:node
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:8
属性名称:type---->属性值:readOnly
-------开始新节点-------------
当前节点名称:variable
当前节点的内容:
属性名称:address---->属性值:9
属性名称:type---->属性值:readOnly
其他dom4j见/article/1788436.html
。