JDOM操作XML文档

简介:   解析 xml文档的接口技术有很多 ,DOM  JDOM  SAX  ..其中JDOM技术是最简单的操作,代码操作比DOM  SAX少很多 。 关于这三种技术的介绍可以去网上查询一下。 SAX是基于事件响应的 (没用过) 。

 

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

 

 


    
    

 

 

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
1天前
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
7 0
|
14天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
15 0
|
1月前
|
XML JavaScript 前端开发
XML文档节点导航与选择指南
XPath是XSLT的核心部分,用于XML文档的节点定位和选择。它采用路径表达式语法,包含200多个内置函数处理各种数据类型。XPath在编程语言如JavaScript中广泛使用,与XSLT配合进行XML转换和样式处理。它涉及7种节点类型,如元素、属性和文本,以及多种节点间关系,如父、子、同级等。XPath还使用轴(如ancestor、child)来描述节点间的关联,并支持运算符进行逻辑和数学操作。
27 0
XML文档节点导航与选择指南
|
2月前
|
XML 存储 JavaScript
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
**XML DOM 遍历、操作和导航概述** - 遍历XML节点树用于提取信息,例如,通过JavaScript的DOM API循环`&lt;book&gt;`子节点显示名称和值。 - DOM解析器处理XML文本数据,包括解析字符数据(PCDATA)和识别CDATA段。 - 节点导航涉及`parentNode`、`childNodes`等属性,`get_nextSibling`等辅助函数避免空文本节点。 - `getElementsByTagName`、`getAttribute`和`nodeValue`用于检索元素、属性值和文本。
42 6
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
|
2月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
12 0
|
2月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
72 0
|
4月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
112 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
5月前
|
XML Java 开发工具
jdom操作xml实战
jdom操作xml实战
|
17小时前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
5 1
|
12天前
|
XML 存储 Java
【OpenCV】—输入输出XML和YAML文件
【OpenCV】—输入输出XML和YAML文件