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

  

时间: 2024-08-15 05:43:03

Java中解析XML的相关文章

Java中解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transform

java 中解析xml的技术

最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩展,严格的语法规定,可使用有意义的标记,内容存储和表现分离等等优势注定了该语言从诞生之日起就会走向辉煌. XML 语言在成为 W3C 标准之后进入到了一个快速发展的时期,当然它本身所具有的一系列优点和优势也注定了各大技术厂商对它的偏爱,Java 作为软件行业的一种开发技术也迅速作出了反应,出现了多种对 XML 支持的工具,本文将会从这个角度对 Jav

Java中对xml的解析

Java中对xml的解析 1.Dom4j Dom解析原理:xml解析器一次性将xml文档加载到内存中,然后在内存中构建一颗Document对象树.在通过Document对象得到树上的节点对象,通过节点对象操作文档内容. Dom4J 常用的对象: SAXReader:读取 xml 文件到 Document 树结构文件对象 Document:是一个 xml 文档对象树,类比 Html 文档对象. Element:元素节点.通过 Document 对象可以查找单个元素 使用步骤: ( 导入 Dom4J

java dom4j解析xml实例(2)

java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar(如果不导入这个架包程序可以执行出结果,但最后会报异常) 将相关jar包引入后,实际解析操作如下:  1.要解析的xml文件province.xml: <china dn="d

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

JAVA SAX解析XML文件

[代码] [Java]代码view sourceprint?001package SAXparse;002 003 004import java.io.FileInputStream;005import java.lang.reflect.Array;006import java.lang.reflect.InvocationTargetException;007import java.lang.reflect.Method;008import java.text.ParseException;

java dom4j解析xml实例(3)

代码运行前需要先导入dom4j架包. 需要解析的XML文件test.xml如下: <students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士

java DOM解析xml文件出现#text节点解决方案

java DOM解析xml文件出现#text节点解决方案 原生java解析xml的方法提供了两个,DocumentBuilder 和 SAXParser. 试了第一个DOM方法,在解析输出节点过程中,getNodeName()输出节点名发现多出了几个#text节点. text.xml <?xml version="1.0" encoding="UTF-8"?> <!-- xml解析测试文件 --> <LData> <ldat

iOS中解析 XML / JSON

JSON数据格式 1. 概述: JSON (JavaScript Object Notation) 是?一种轻量级的数据交换格式 基于?文本格式,易于?人阅读和编写,同时也易于机器解析和?生成. 2. JSON 数据的书写格式是:名称/值 • 名称写在前?面(在双引号中) • 值对写在后?面 • 中间?用冒号隔开 3. JSON 值?支持类型 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在中括号中) 对象(在花括号中) null JSON格式?一:最外层