java解析String类型t复杂xml,多级节点,最好的例子

需要用jar包 dom4j-1.6.1.jar
字符串xml如下:
<root>
    <flw>
    <name>aa</name>
    <age>22</age>
    <instance_info>
          <num>1</num>
           <code>0</code>
          <instance>
               <ip>10.1.1.2</ip>
               <mask>9999</mask>
         </instance>
         <instance>
               <ip>10.1.1.5</ip>
               <mask>717</mask>
         </instance>
    </instance_info>
    
    <instance_info>
          <num>2</num>
           <code>33</code>
          <instance>
               <ip>10.1.1.2</ip>
               <mask>9999</mask>
         </instance>
         <instance>
               <ip>10.1.1.9</ip>
               <mask>878</mask>
         </instance>
    </instance_info>
   </flw>
</root>
解析代码:
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;

import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class XMLParser {
       public static void main(String[] args) {
            String xml = "<root><flw><name>aa</name><age>22</age><instance_info><num>1</num><code>0</code><instance><ip>10.1.1.2</ip><mask>9999</mask></instance><instance><ip>10.1.1.5</ip><mask>717</mask></instance></instance_info><instance_info><num>2</num><code>33</code><instance><ip>10.1.1.2</ip><mask>9999</mask></instance><instance><ip>10.1.1.9</ip><mask>878</mask></instance></instance_info></flw></root>";
     
            long start = System.currentTimeMillis();
     
            SAXReader reader = new SAXReader();
            try {
                org.dom4j.Document doc = reader.read(new ByteArrayInputStream(xml
                        .getBytes("UTF-8")));
                org.dom4j.Element root = doc.getRootElement();
                org.dom4j.Element element;
                org.dom4j.Element element2;
                org.dom4j.Element element3;
                for (Iterator i = root.elementIterator("flw"); i.hasNext();) {
                    element = (org.dom4j.Element) i.next();
                    System.out
                            .println("name:[" + element.elementText("name") + "]");
                    System.out.println("age:[" + element.elementText("age") + "]");
                    for (Iterator j = element.elementIterator("instance_info"); j
                            .hasNext();) {
                        element2 = (org.dom4j.Element) j.next();
                        System.out.println("	num:[" + element2.elementText("num")
                                + "]");
                        System.out.println("	code:["
                                + element2.elementText("code") + "]");
                        for (Iterator k = element2.elementIterator("instance"); k
                                .hasNext();) {
                            element3 = (org.dom4j.Element) k.next();
                            System.out.println("		ip:["
                                    + element3.elementText("ip") + "]");
                            System.out.println("		mask:["
                                    + element3.elementText("mask") + "]");
                        }
                    }
                }
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            long end = System.currentTimeMillis();
            System.out.println("耗时:" + (end - start) + "ms");
        }
}
原文地址:https://www.cnblogs.com/chen-lhx/p/6168727.html