`
liuwentao
  • 浏览: 77820 次
  • 来自: 江西
社区版块
存档分类
最新评论

简单使用JDOM解析XML

    博客分类:
  • xml
阅读更多

使用JDOM解析XML
一、前言
    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="utf-8"?>
<books>
   <book email="zhoujunhui">
     <name>rjzjh</name>
     <price>60.0</price>
  </book>
</books>
够简单的吧,但它对于我们关心的东西都有了,子节点,属性。
下面是用于解析这个XML文件的Java文件:


1 public class JDomParse {
2    public JDomParse(){
3        String xmlpath="library.xml";
4        SAXBuilder builder=new SAXBuilder(false);
5        try {
6            Document doc=builder.build(xmlpath);
7            Element books=doc.getRootElement();
8            List booklist=books.getChildren("book");
9            for (Iterator iter = booklist.iterator(); iter.hasNext();) {
10                Element book = (Element) iter.next();
11                String email=book.getAttributeValue("email");
12                System.out.println(email);
13                String name=book.getChildTextTrim("name");
14                System.out.println(name);
15                book.getChild("name").setText("alterrjzjh");
16                
17            }
18            
19            XMLOutputter outputter=new XMLOutputter();
20            outputter.output(doc,new FileOutputStream(xmlpath));
21            
22        } catch (JDOMException e) {
23            e.printStackTrace();
24        } catch (IOException e) {
25            e.printStackTrace();
26        }
27    }
28    public static void main(String[] args) {
29        new JDomParse();
30    }
31}
不到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       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文档讲解完了,麻雀虽小,五脏俱全。现在已对JDOM有个整体上的概念了吧。

文章来自:http://www.java3z.com/cwbwebhome/article/article2a/217.jsp?id=106

分享到:
评论
2 楼 icelure 2011-10-28  
1楼没搞清楚概念吧,DOM解析和tomcat没有必然联系,普通的java程序就能使用
1 楼 xpice 2008-03-29  
但是这样有时会出现一个问题,就是在Tomcat 下的话有时将*。xml文件丢失掉---就是删除

相关推荐

    jdom解析XML的实用例程

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等场景。...在"jdom解析XML的实用例程"这个主题下,你可以深入学习并实践这些知识,提升你的XML处理技能。

    JDOM解析同名多节点的XML源代码

    本篇文章将深入探讨如何使用JDOM解析包含同名多节点且带有多个属性的XML源代码,以及如何从HTTP返回流中直接获取并解析XML数据。 首先,让我们理解XML文档的基本结构。XML文档由元素、属性、文本和注释等组成。同名...

    XML解析器下载JAR包

    使用JDOM解析XML的基本步骤如下: 1. 引入JDOM JAR包到项目类路径。 2. 加载XML文件,创建`SAXBuilder`对象来构建DOM树。 3. 使用`build`方法解析XML文件,得到`Document`对象。 4. 通过`Document`对象访问和操作XML...

    jdom从数据库和xml拿数据生成xml

    4. **XML解析与生成**:JDOM提供API来解析XML文件,将XML文档转化为内存中的对象结构,这使得可以方便地遍历和修改XML内容。同样,也可以使用JDOM来生成新的XML文档,包括从数据库中提取的数据。 5. **JDOM基本使用...

    Spring+iBatis+JDom递归生成XML树

    它提供了一种简单且高性能的方式来创建、修改和读取XML内容。在本项目中,JDom用于构建XML树结构。通过递归算法,我们可以遍历数据库中获取的数据,并用JDom创建出对应的XML节点,从而生成XML文档。 具体步骤如下:...

    Jdom教程 Jdom教程.pdf

    JDOM提供了两种方式来解析XML文档:通过`SAXBuilder`和使用XPath表达式。 ##### 1. 使用SAXBuilder解析 ```java SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File("input.xml")); ``...

    解析xml存储到文本中

    本教程将深入讲解如何解析XML字符串并将其存储为.txt文本文件,同时我们将利用JDOM库来实现这一过程。 首先,让我们了解JDOM。JDOM是一个Java API,用于读取、修改、创建和写入XML文档。它提供了方便的API来处理XML...

    jdom.rar_jdom_jdom.zip

    1. **解析XML文档**:JDOM提供SAXBuilder和DOMBuilder两种方式解析XML文档。SAXBuilder基于事件驱动,适用于大文件的处理,内存消耗较小;DOMBuilder则一次性加载整个文档,适合小文件或内存充足的情况。解析后得到...

    使用DOM4j解析xml

    ### 使用DOM4j解析XML详解 #### DOM4j概述 DOM4j是一个Java库,用于处理XML数据。它提供了一种高效、灵活的方式来解析、创建和修改XML文档。DOM4j支持DOM、SAX和JDOM等接口,使得开发者可以在不同的环境中选择最...

    jdom-1.1开源包下载。完整资料。

    3. 使用JDOM API创建XML文档,如`DocumentBuilderFactory`和`DocumentBuilder`用于解析XML,`Element`类用于创建XML元素,`Attribute`类用于添加属性,`Text`类用于添加文本。 4. 读取和修改XML文档,可以使用`...

    java实用工具包大众型XML处理

    1. **解析XML**:Java中常用的XML解析器有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。DOM解析器将整个XML文档加载到内存中,形成一棵节点树,适合小规模的XML文档;...

    jdom教程详解

    ### jdom教程详解 #### 一、JDOM简介与应用场景...它不仅能够帮助开发者快速地读取和解析XML文档,还能方便地进行修改和创建新的XML文档。对于需要频繁与XML数据打交道的应用程序来说,JDOM无疑是一个非常实用的工具。

    可以用的jdom+rome.jar

    1. 使用JDOM解析XML文档,创建一个JDOM的Document对象。 2. 在Document对象上进行查询,找到RSS Feed的相关元素。 3. 使用ROME将这些元素转换成对应的RSS Feed模型对象。 4. 通过模型对象获取RSS Feed的详细信息,如...

    JAVA编程百例+JAVA面试题集十套(经典)

    实例70 使用JDOM解析XML 实例81 SERVLET读取COOKIE数据 实例86 JSP使用数据连接池 实例99 连接数据库 实例100 上传文件 面试题(很多企业都常常从这些面试题库中选题作为笔试题): Java就业面试题大全.pdf Java最...

    XML解析技术

    JDOM是Java实现的DOM解析库,提供了更方便的API,使得XML操作更加简单。 3. **DOM4J解析**: DOM4J是一个灵活且功能强大的Java XML API,它扩展了DOM模型,同时兼容SAX和DOM。DOM4J提供了一种面向对象的方式来处理...

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    在这个示例中,我们首先创建了一个`SAXBuilder`来解析XML文件,然后通过`XPathFactory`创建了`XPath`实例。接着,我们编译了XPath表达式(例如`//item`,表示查找所有`&lt;item&gt;`元素),然后使用`evaluate()`方法来...

    JDOM API CHM格式

    2. **读取XML文档**:通过`SAXBuilder`或`DOMBuilder`解析XML文件,将内容加载到`Document`对象中。 3. **修改XML文档**:在`Document`对象上直接操作,如添加、删除或修改元素、属性。 4. **序列化XML文档**:使用`...

    简易XML编辑器

    1. **解析XML文档**:DOM4J可以将XML文件加载到内存中的Document对象,形成一个树形结构,便于程序进行遍历和操作。 2. **查询XML节点**:DOM4J支持XPath表达式,可以通过XPath语句快速定位到XML文档中的特定节点,...

    XML文档的解析

    在提供的压缩包文件“xml工具类”中,可能包含了帮助开发者处理XML文档的实用工具类,这些类可能封装了常见的XML操作,如创建、解析、修改、查询等,简化了XML处理的工作。使用这些工具类,可以更加高效地与XML数据...

    jdom和rome1.0包

    通过JDOM,开发者可以高效地操作XML数据,而通过ROME,他们可以轻松地解析、生成和管理RSS和Atom feeds。对于那些需要构建新闻聚合应用或需要从网上获取RSS内容的开发者来说,这个包具有很高的实用价值。

Global site tag (gtag.js) - Google Analytics