JDOM操作XML文档

 

解析 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>");
    %>

 

 


    
    

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UsherYue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值