利用开源JDOM对XML编程

首先先介绍对XML的两种解析方式:

(XML在不同语言中的解析方式是一样的,只是解析的语法不一样而已。这也是xml的优势)

1.第一种方式——DOM解析器

DOM是基于树形结构的节点或者信息片段的集合。DOM的原理是使用DOM对XML文件进行操作时,

首先解析文件,将文件分为独立的元素,属性和注释等,然后以节点树的形式在内存中对XML文字进行表示

这样就可以通过节点树访问文档的内容,本根据需要修改文档。

需要注意的是:DOM解析器是读入整个文档,所以内存占用相对较高

2.第二种方式——SAX解析器

SAX是一种基于事件的解析器,事件驱动的流式解析方式是从文件的开始顺序解析到文档的结束,不可暂停

或者倒退。

优点是解析速度快,占用内存少

简单的理解就是对文档进行顺序扫描,当扫描到文档开始与结束,元素开始与结束等位置时通知事件处理函数,

由事件处理函数做相应的动作,然后继续同样的扫描,直至文档结束!

 

然后再来直接看JDOM的使用

//日期:2019.5.30
//作者:******
//功能:练习使用java配合读写xml文件,通过开源的JDOM
/*
 * 1.JDOM用来弥补DOM和SAX在实际应用中的不足之处
 * 2.SAX的不足主要在于他没有文档修改,随机访问,以及输出的功能
 * 3.DOM的不足主要在于其是一个接口定义语言,他的任务是在不同语言实现一个最低的通用标准,
 * 	   并不是专门为java特别设计的。
 * 4.JDOM与现行的SAX和DOM标准兼容为java程序员提供了一个简单,轻量的xml文档操作方法
 * */

package com.******;

import java.io.IOException;
import java.util.*;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class Test2 {
	public static void main(String args[])
	{
		SAXBuilder builder = new SAXBuilder();	//创建SAX模式构造器对象
		try {
			//调用模式构造器的build方法读取xml文档并创建document文档对象
			Document document = builder.build("source/peizhi.xml");
			//通过document文档对象获取文档的根元素对象
			Element root = document.getRootElement();
			//由根元素对象获取根元素下所有的元素并存放在List对象中
			List list = root.getChildren();
			
			System.out.printf("%-20s%-20s%-20s", "id","name","phone");
			System.out.println();
			System.out.println("==============================================================");
			System.out.println();
			for(int i = 0; i < list.size(); i++)
			{
				Element student = (Element)list.get(i);
				//getAttributeValue方法得到元素的属性值
				String id = student.getAttributeValue("id");
				//getChildren得到子元素,get方法相当于得到集合中的第几个子元素
				Element nameElement = (Element)student.getChildren().get(0);
				//getValue方法。把对应xml元素的值转变成java的String
				String name = nameElement.getValue();
				Element phoneElement = (Element)student.getChildren().get(1);
				String phone = phoneElement.getValue();
				
				System.out.printf("%-20s%-20s%-20s",id,name,phone);
				System.out.println();
			}
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

程序所用测试的XML文件展示:

<?xml version="1.0" encoding="GB2312"?>
<students>
	<student id="55161014">
		<name>changchun</name>
		<phone>15015015000</phone>
	</student>
	<student id="55161015">
		<name>handan</name>
		<phone>32132132155</phone>
	</student>
</students>

程序测试结果:

 

以上只是展示了JDOM对XML读取的相关简单操作流程

其余深入内容,以及对XML的写入读者自行学习即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值