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

来源:互联网 发布:查排名软件怎么样 编辑:程序博客网 时间:2024/04/30 10:57
需要用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("\tnum:[" + element2.elementText("num")                            + "]");                    System.out.println("\tcode:["                            + element2.elementText("code") + "]");                    for (Iterator k = element2.elementIterator("instance"); k                            .hasNext();) {                        element3 = (org.dom4j.Element) k.next();                        System.out.println("\t\tip:["                                + element3.elementText("ip") + "]");                        System.out.println("\t\tmask:["                                + element3.elementText("mask") + "]");                    }                }            }        } catch (DocumentException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        long end = System.currentTimeMillis();        System.out.println("耗时:" + (end - start) + "ms");    }}