Java中JDom解析XML_动力节点Java学院整理

发布时间 - 2026-01-11 02:34:44    点击率:

一、前言

    JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。

    DOM适合于当今流行的各种语言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。它了为HTML和XML文档提供了一个可应用于不同平台的编程接口。W3C DOM的最新信息可从http://www.w3.org/TR2001/WD-DOM-Lever-3-Core-20010913查阅。微软在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxmldomuserguide.asp上也有DOM的详细技术信息。

DOM的设计为了适用于不同的语言,它保留了不同语言中非常相似的API。但是它并不适合于Java编程者的习惯。而JDOM作为一种轻量级API被制定,它最核心的要求是以Java为中心,只适合于Java语言,它遵循DOM的接口主要规则,除去了DOM中为了兼容各语言而与Java习惯的不同。

二、使用JDOM的前提条件

   须要有SAX、DOM解析器的类文件,JDOM只是一种适合Java程序员来使用的Java XML解析器,目前流行的Java XML解析器还有:Apache Xerces Java、JAXP。

Xerces Java解析器是完全用Java编写的XML解析器,最新版本是2.5,它支持以下标准和API:

(1) XML1.0规范(第二版本)

(2) XML命名空间规范

(3) DOM2核心标准规范

(4) SAX2核心扩展

(5) JAXP1.2 :是Sun提供的使用Java处理XML的接口API。

(6) XML Schema结构和数据类型标准

      还有最好的是它开放源代码,我们可以在http://xml.apache.org/dist/xerces-j/ 处去下载。下载文件Xerces-J-bin.2.5.0.zip。

解压下载文件,得到四个压缩包加到项目的路径中(其实不要全加,但不熟的情况下考虑这么做)。

JDOM的二进制版本下载:http://www.jdom.org/downloads/index.html

把解压后的jdom.jar文件加到项目的类路径中,另外便于调试,还要下载它的源代码。

三、使用JDOM解析XML

     好了,现在该是正题了。下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档。

为了简单,我用了如下XML作为要解析的XML文件:

<?xml version="1.0" encoding="gb2312"?>
<books>
  <book email="zhoujunhui">
   <name>rjzjh</name>
   <price>60.0</price>
 </book>
</books>

够简单的吧,但它对于我们关心的东西都有了,子节点,属性。

下面是用于解析这个XML文件的Java文件:

 public class JDomParse {
 public JDomParse(){
 String xmlpath="library.xml";
 SAXBuilder builder=new SAXBuilder(false);
 try {
  Document doc=builder.build(xmlpath);
  Element books=doc.getRootElement();
  List booklist=books.getChildren("book");
  for (Iterator iter = booklist.iterator(); iter.hasNext();) {
  Element book = (Element) iter.next();
  String email=book.getAttributeValue("email");
  System.out.println(email);
  String name=book.getChildTextTrim("name");
  System.out.println(name);
  book.getChild("name").setText("alterrjzjh");
  
  }
  
  XMLOutputter outputter=new XMLOutputter();
  outputter.output(doc,new FileOutputStream(xmlpath));
  
 } catch (JDOMException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
 public static void main(String[] args) {
 new JDomParse();
 }
}

    

不到30行代码,现在我对代码解释一下:

四、解释代码

引用的类:

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
//下面是引用到JDOM中的类
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

(1)使用JDOM首先要指定使用什么解析器。如:

        SAXBuilder builder=new SAXBuilder(false); 这表示使用的是默认的解析器

(2)得到Document,我们以后要进行的所有操作都是对这个Document操作的:

  Document doc=builder.build(xmlpath);

(3)得到根元素:

 Element books=doc.getRootElement();

在JDOM中所有的节点(DOM中的概念)都是一个org.jdom.Element类,当然他的子节点也是一个org.jdom.Element类。

(4)得到元素(节点)的集合:     

 List booklist=books.getChildren("book");

这表示得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中

(5)轮循List集合 

  for (Iterator iter = booklist.iterator(); iter.hasNext();) {
    Element book = (Element) iter.next();
  }

还有一种轮循方法是:   

 for(int i=0;I<booklist.size();I++){
   Element book=(Element)booklist.get(i);
  }

(6)取得元素的属性: 

  String email=book.getAttributeValue("email");

   取得元素book的属性名为“email”的属性值。

(7)取得元素的子元素(为最低层元素)的值: 

 String name=book.getChildTextTrim("name");

    注意的是,必须确定book元素的名为“name”的子元素只有一个。

(8)改变元素(为最低层元素)的值: 

book.getChild("name").setText("alterrjzjh");

    这只是对Document的修改,并没有在实际的XML文档中进行修改

(9)保存Document的修改到XML文件中:

  XMLOutputter outputter=new XMLOutputter();
  outputter.output(doc,new FileOutputStream(xmlpath));

我们先要有一个XMLOutputter类,再把已经修改了的Document保存进XML文档中。


# jdom解析xml  # Javaweb中使用Jdom解析xml的方法  # Java全面解析XML格式串(JDOM解析)  # java使用Jdom实现xml文件写入操作实例  # Java使用Jdom读取xml解析实例  # java 使用JDOM解析xml文件  # java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解  # 基于JDOM生成解析XML过程解析  # 的是  # 都是  # 适合于  # 文档  # 工具包  # 开放源代码  # 这一  # 也有  # 是一种  # 好了  # 去了  # 要有  # 我对  # 适用于  # 我们可以  # 微软  # 用了  # 两大  # 这只  # 只有一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京企业网站设计制作公司,北京铁路集团官方网站?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  详解jQuery停止动画——stop()方法的使用  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何安全更换建站之星模板并保留数据?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  怎么用AI帮你为初创公司进行市场定位分析?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  零基础网站服务器架设实战:轻量应用与域名解析配置指南  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网页设计与网站制作内容,怎样注册网站?  javascript基于原型链的继承及call和apply函数用法分析  C语言设计一个闪闪的圣诞树  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何在Tomcat中配置并部署网站项目?  Laravel如何实现用户密码重置功能?(完整流程代码)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  香港服务器WordPress建站指南:SEO优化与高效部署策略  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何用5美元大硬盘VPS安全高效搭建个人网站?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  JavaScript如何实现继承_有哪些常用方法  Android实现代码画虚线边框背景效果  简单实现Android文件上传  网站制作企业,网站的banner和导航栏是指什么?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  微信小程序 scroll-view组件实现列表页实例代码  SQL查询语句优化的实用方法总结  nodejs redis 发布订阅机制封装实现方法及实例代码  如何快速启动建站代理加盟业务?  Laravel怎么在Controller之外的地方验证数据  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何用免费手机建站系统零基础打造专业网站?  Python文件异常处理策略_健壮性说明【指导】  Thinkphp 中 distinct 的用法解析  高防服务器租用如何选择配置与防御等级?  JavaScript如何实现倒计时_时间函数如何精确控制