解析 xml文档的接口技术有很多 ,DOM JDOM SAX ..其中JDOM技术是最简单的操作,代码操作比DOM SAX少很多 。
关于这三种技术的介绍可以去网上查询一下。
SAX是基于事件响应的 (没用过) 。
DOM是java官方的标准,我们在操作xml的时候其实是在内存中构建了一棵文档树,对于较小的xml文档可以使用dom处理,但是对于数据量比较大的XML文档,DOM比较耗费内存。
JDOM是一个开源的项目,融合了DOM和SAX技术 ,轻量级的API可以方便的操作XML文档,内存的消耗比较小。
他可以不必像DOM一样完全把XML文档读入内存中而进行xml的操作。
我们在JDOM 完全可以吧 XML文档 文档的的元素 以及元素的属性 内容等等都对应着java类 。
我们可以像new java对象一样 ,操作 xml文档 元素 属性 内容 。
我们要使用JDOM技术就要下载JDOM包, http://www.jdom.org 去下载,目前的版本是JDOM2 对应的文档也是JDOM2 DOCS
我们把下载到的JDOM2.jar部署到我们的web应用就可以了。
在里面可以很方便的查询各种JDOM类的使用方法
org.dom2.* 包中的类是xml文档结构的映射类。这些类都从org.jdom2.Content这个抽象类继承而来
Document 代表了一个xml文档、
Element 代表了文档的元素即节点
Attribute 代表了文档的元素属性
DocType 代表了xml文档的DTD
我们主要使用的就这些 ,其余很多应用我们在实际应用中去查查文档就OK ,其实每一种技术 我们不一定说非要完全在脑子里面熟练记忆,我们只要知道用法 和查找文档就可以了。 现用现查 。
org.jdom2.input 这个包有关xml文档的读取类包含了 xml解析器 。
org.jdom2.output 这个包中的类用于输出xml文档 。 比如我们可以将内存的Document对象输出到 控制台 磁盘等等。。
1、
下面就跟着应用简单通过编程创建XML文档 ////构建文档结构树 //////////// / 注意的是每添加一个节点 都必须重新定义节点对象 不能复用
Element root=new Element("root"); //创建根节点
Document myDocument=new Document() ; //创建文档对象
myDocument.addContent(root) ; //将唯一的根节点添加到文档对象
Element s1=new Element("student") ; //创建根节点的第一个student节点
Element name=new Element("name"); //student的name子节点
Element age=new Element("age"); //同上
Element sex=new Element("sex"); //同上
Element id=new Element("id");//同上子节点
/////文档构建完成
name.setText("张三") ; //设置子节点body的文本
age.setText("15") ;
sex.setText("man") ;
id.setText("1") ;
s1.addContent(name) ; //增加子节点到父节点student
s1.addContent(age) ;
s1.addContent(sex);
s1.addContent(id) ;
root.addContent(s1) ; //将所有子节点添加到根节点
Element s2=new Element("student") ; //第二个学生信息 如上
Element name1=new Element("name");
Element age1=new Element("age");
Element sex1=new Element("sex");
Element id1=new Element("id");
name1.setText("张三") ;
age1.setText("15") ;
sex1.setText("man") ;
id1.setText("1") ;
s2.addContent(name1) ;
s2.addContent(age1) ;
s2.addContent(sex1);
s2.addContent(id1) ;
root.addContent(s2) ; //将第二个student子节点添加到根节点
OutputStream os=new FileOutputStream("d:/student.xml"); //定义文件输出流
Format format=Format.getPrettyFormat() ; //定义Format格式 xml格式
format.setEncoding("gb2312") ; //设置xml为 gb2312编码
XMLOutputter output=new XMLOutputter(format); //创建 XMLOutput对象 通过制定格式
output.output(myDocument, os) ; //将Document对象输出到xml文档中
os.close() ;//over
2、读取一个xml文档通过JDOM 这是后我们需要用到的是 org.jdom2.input 包中的 SAXBuilder 解析xml文档 。
当然还有 DOMBuilder可以使用 不过这个可以将DOM模型转换成JDOM模型。
解析器的功能是解析一个 xml文档到一个Document对象。
有下面一个xml文档: 解析后如下 :
<?xml version="1.0" encoding="gb2312"?>
<root>
<student>
<name>张三</name>
<age>15</age>
<sex>man</sex>
<id>1</id>
</student>
<student>
<name>李四</name>
<age>16</age>
<sex>woman</sex>
<id>2</id>
</student>
</root>
我们使用如下代码解析:
<%
SAXBuilder builder=new SAXBuilder() ;
Document myDocument=builder.build("D:/student.xml") ;
Element root=myDocument.getRootElement() ;
out.print("<table border=1 width=100% ><tr><td colspan=4 align=center>"+root.getName()+"</td></tr>");
List list=root.getChildren() ;
out.print("<tr><td align=center>name</td><td align=center>age</td><td align=center>sex</td><td align=center>id</td></tr>") ;
for(Object obj:list)
{
out.print("<tr>");
Element el=(Element)obj;
List sub=el.getChildren() ;
for(Object subObj:sub)
{
Element tem=(Element)subObj ;
out.print("<td align=center>"+tem.getText()+"</td>");
}
out.print("</td>");
}
out.print("</table>");
%>