Jdom解析多层xml文件

Jdom解析多层xml文件

一、Jdom简介:

JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
    JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。
在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。
        JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来,以弥补DOM及SAX在实际应用当中的不足之处。
这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便。
JDOM作为一种轻量级API被制定,它最核心的要求是以Java为中心,只适合于Java语言,它遵循DOM的接口主要规则,除去了DOM中为了兼容各语言而与Java习惯的不同。
        DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。

二、jdom使用前提条件

导入jdom.jar包。

JDOM是由以下几个包组成的
org.jdom                包含了所有的xml文档要素的java类
org.jdom.adapters         包含了与dom适配的java类
org.jdom.filter            包含了xml文档的过滤器类
org.jdom.input            包含了读取xml文档的类
org.jdom.output           包含了写入xml文档的类
org.jdom.transform        包含了将jdom xml文档接口转换为其他xml文档接口
org.jdom.xpath            包含了对xml文档xpath操作的类

三、实例讲解

 Xml文件如下:
    

	
1001 szghrs
xxxxxxxxxxx xxxxxx
xxxxxxx
解析XML文件
//创建一个新的字符串
	    StringReader read = new StringReader(queryXml);
	    //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
	    InputSource source = new InputSource(read);
	    //创建一个新的SAXBuilder
	    SAXBuilder sb = new SAXBuilder();
	    try {
	        //通过输入源构造一个Document
	        Document doc = sb.build(source);
	        //取的根元素
	        Element requestPkg = doc.getRootElement();
	        //得到根元素所有子元素的集合
	        List header_dataset = requestPkg.getChildren();
	        Map maps = new HashMap();
	        for (int i = 0; i < header_dataset.size(); i++) {
	        	Element ehd = (Element) header_dataset.get(i);
	        		List headerChild = ehd.getChildren();
	        		//  遍历header标签里的所有内容
	        		for (int j = 0; j < headerChild.size(); j++) {
	        			Element e = (Element) headerChild.get(j);
                     //遍历data中内容
	        			if("data".equals(e.getName())){
	        				List DateChild = e.getChildren();
	        				for (int k = 0; k < DateChild.size(); k++) {
	    	        			Element ei = (Element) DateChild.get(k);
	    	        			maps.put(ei.getName(),ei.getText());
	    	        			System.out.println("name = " + ei.getName() + ", value = " + ei.getText());
	    	        		}
	        			}else{
	        				maps.put(e.getName(),e.getText());
	        			}       			
	        		}
	        }

如果再有多层嵌套,在data循环中嵌套遍历。

部分内容转自百度百科。

转载请标明出处!!!!!

你可能感兴趣的:(Jdom解析多层xml文件)