zoukankan      html  css  js  c++  java
  • 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
    		}
    	}
    

      

  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/it888/p/5068066.html
Copyright © 2011-2022 走看看