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("\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");
	    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值