Java中解析XML

MAVEN坐标:

<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>

XML格式:

<?xml version="1.0" encoding="GBK"?>
<root>
	<head>
		<code>1</code>
		<message>数据下载成功</message>
		<rownum>1</rownum>
	</head>
</root>
<body>
	<veh id="0">
		<xh>1</xh>
		<hpzl>1</hpzl>
		<hphm>皖A123456</hphm>
		<clppl>皖A123456</clppl>
		<clxh>车辆类型</clxh>
		<clsbdh>车辆识别代号</clsbdh>
		<fdjh>发动机号</fdjh>
		<cllx>车辆类型</cllx>
		<csys>车身颜色</csys>
		<syxz>使用性质</syxz>
		<syr>机动车所有人</syr>
		<ccdjrg>初次登记日期</ccdjrg>
		<yxqz>检验有效期止</yxqz>
		<qzbfqz>强制报废期止</qzbfqz>
		<zt>机动车状态</zt>
		<fdjxh>发动机型号</fdjxh>
		<rlzl>燃料种类</rlzl>
		<pl>1</pl>
		<gl>1</gl>
		<zs>1</zs>
		<zj>1</zj>
		<zzl>总质量</zzl>
		<zbzl>整备质量</zbzl>
		<hdzzl>核定载质量</hdzzl>
		<hdzk>核定载客</hdzk>
		<ccrq>出厂日期</ccrq>
	</veh>
</body>

  

代码如下:

package com.goldensky.common;

import java.io.StringReader;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

public class Test {

	public static void main(String[] args) throws Exception {
		

		String xml = "<?xml version='1.0' encoding='GBK'?><root><head><code>1</code><message>数据下载成功</message><rownum>1</rownum></head><body><veh id='0'><xh>1</xh><hpzl>1</hpzl><hphm>皖A123456</hphm><clppl>皖A123456</clppl><clxh>车辆类型</clxh><clsbdh>车辆识别代号</clsbdh><fdjh>发动机号</fdjh><cllx>车辆类型</cllx><csys>车身颜色</csys><syxz>使用性质</syxz><syr>机动车所有人</syr><ccdjrg>初次登记日期</ccdjrg><yxqz>检验有效期止</yxqz><qzbfqz>强制报废期止</qzbfqz><zt>机动车状态</zt><fdjxh>发动机型号</fdjxh><rlzl>燃料种类</rlzl><pl>1</pl><gl>1</gl><zs>1</zs><zj>1</zj><zzl>总质量</zzl><zbzl>整备质量</zbzl><hdzzl>核定载质量</hdzzl><hdzk>核定载客</hdzk><ccrq>出厂日期</ccrq></veh></body></root>";
		
		getBean(xml);
		
	}
	
	public static void getBean(String xmlDoc)
	{
		//创建一个新的字符串
        StringReader read = new StringReader(xmlDoc);
      //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
        InputSource source = new InputSource(read);
        //创建一个新的SAXBuilder
        SAXBuilder sb = new SAXBuilder();
        try {
        	
        	 //通过输入源构造一个Document
            Document doc =  sb.build(source);
          //取的根元素
            Element root = doc.getRootElement();
            System.out.println(root.getName());//输出根元素的名称(测试)
            
          //得到根元素所有子元素的集合
            List nodelist =  root.getChildren();
            Element et = null;
            Element ev = null;//veh下面的节点
            
            for(int i=0;i<nodelist.size();i++){
                et = (Element) nodelist.get(i);//循环依次得到子元素
                if(et.getName().equals("head"))
                {
	                System.out.println(et.getChild("code",null).getText());
	                System.out.println(et.getChild("message",null).getText());
	                System.out.println(et.getChild("rownum",null).getText());
                }
                else if(et.getName().equals("body"))
                {
                	System.out.print("开始读取Veh节点信息...");
                	List nd =et.getChildren();
                	 for(int j=0;i<=nd.size();j++)
                	 {
                		 ev=(Element) nd.get(j);
                		//这里就是判断有多个veh,可以取多个veh下面的节点。根据我们的业务,就默认取第一个veh
                		List count= ev.getAttributes();
                		 if(ev.getName().equals("veh"))
                		 {
                		   System.out.println(ev.getChild("xh",null).getText());
	                	   System.out.println(ev.getChild("hpzl",null).getText());
	      	               System.out.println(ev.getChild("hphm",null).getText());
	      	               System.out.println(ev.getChild("clxh",null).getText());
	      	               System.out.println(ev.getChild("clsbdh",null).getText());
	      	               System.out.println(ev.getChild("fdjh",null).getText());
	      	               System.out.println(ev.getChild("cllx",null).getText());
	      	               System.out.println(ev.getChild("csys",null).getText());
	      	               System.out.println(ev.getChild("syxz",null).getText());
	      	       
                		 }
                	 }
                	
                }
                	
                
            }
            
			
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

  

原文地址:https://www.cnblogs.com/it888/p/5068066.html