• 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
    		}
    	}
    

      

  • 相关阅读:
    小学二年级四则运算软件需求规格说明书
    周活动总结
    构建之法阅读笔记01
    学习进度条01
    四则运算
    软件工程概论
    课后作业1
    继承与多态-课后作业
    python文件处理-将图像根据坐标画矩形标记
    python文件处理-将图像根据坐标切割成若干小图
  • 原文地址:https://www.cnblogs.com/it888/p/5068066.html
Copyright © 2020-2023  润新知