`
jiayj198609
  • 浏览: 150070 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Jdom使用指南

阅读更多
对xml文档的解析java中有很多种方法,例如使用dom、sax、jdom等等,相比之下,我觉得还是jdom比较方便。下面介绍一下jdom的基本使用方法,不对之处还请各位网友之交。谢谢!

     最新的jdom可以到他的网站:http://www.jdom.org/去下载,现在的版本是1.0版,下载之后将得到jdom-1.0.zip文件,解压后进入build文件夹将看到一个名为jdom.jar的包,这个就是jdom的类包了,将它加到你的classpath里就可以使用jdom提供的各种处理xml的类和他们的方法了。应该注意的是在解压后的文件夹里还有一个lib文件夹,里面保存的是使用jdom的环境包,不过我在我的jdk1.4下使用没引用这些包一样好用,不知道是jdk1.4中已经包含了这些东西还是原来我的eclipse已经引用了这些包,呵呵。

好了,书归正传,现在开始介绍jdom包的使用。

jdom包的结构包括:

org.jdom 包含了所有的xml文档要素的java类
 

org.jdom.adapters 包含了与dom适配的java类

org.jdom.filter 包含了xml文档的过滤器类

org.jdom.input 包含了读取xml文档的类

org.jdom.output 包含了写入xml文档的雷

org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口

org.jdom.xpath 包含了对xml文档xpath操作的类

下面将通过一个例子介绍jdom的常用操作

生成xml文档:
下面的类将生成一个xml文档:
import java.io.*;
import org.jdom.*;
import org.jdom.output.*;
 
public class WriteXML
{
    public void BuildXML() throws Exception
    {
        Element root,student,number,name,age;
                
        root = new Element("student-info"); //生成根元素:student-info   
        student = new Element("student");      //生成元素:student,该元素中将包含元素number,name,age
        number = new Element("number");
        name = new Element("name");
        age = new Element("age");
        
        Document doc = new Document(root);    //将根元素植入文档doc中
        
        number.setText("001");
        name.setText("lnman");
        age.setText("24");
        student.addContent(number);
        student.addContent(name);
        student.addContent(age);
        root.addContent(student);
        
        Format format = Format.getCompactFormat();
        format.setEncoding("gb2312");           //设置xml文件的字符为gb2312
        format.setIndent("    ");               //设置xml文件的缩进为4个空格
        
        XMLOutputter XMLOut = new XMLOutputter(format);//在元素后换行,每一层元素缩排四格 
        XMLOut.output(doc, new FileOutputStream("studentinfo.xml"));  
        
    }
    
    public static void main(String[] args) throws Exception
    {
        WriteXML w = new WriteXML();
        System.out.println("Now we build an XML document .....");
        w.BuildXML();
        System.out.println("finished!");
    }
 
}

生成的xml文档为:
<?xml version="1.0" encoding="gb2312"?>

<student-info>

  <student>

    <number>001</number>

    <name>lnman</name>

    <age>24</age>

  </student>

</student-info>



读取xml文档的例子:
/*
 * Created on 2004-10-9
 * 
 *用jdom读取xml文档的例子
 *
 */
 
/**
 * @author lnman
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
import org.jdom.output.*;
import org.jdom.input.*;
import org.jdom.*;
import java.io.*;
import java.util.*;
public class ReadXML
{
    public static void main(String[] args) throws Exception
    {     
        SAXBuilder builder = new SAXBuilder();
        Document read_doc = builder.build("studentinfo.xml");
        Element stu = read_doc.getRootElement();
        List list = stu.getChildren("student");
        for(int i = 0;i < list.size();i++)
        {
            Element e = (Element)list.get(i);
            String str_number = e.getChildText("number");
            String str_name = e.getChildText("name");
            String str_age = e.getChildText("age");
            System.out.println("---------STUDENT--------------");
            System.out.println("NUMBER:" + str_number);
            System.out.println("NAME:" + str_name);
            System.out.println("AGE:" + str_age);
            System.out.println("------------------------------");
            System.out.println();
        }       
    }
}


Xpath例子:
      JDOM的关于XPATH的api在org.jdom.xpath这个包里。这个包下,有一个抽象类XPath.java和实现类JaxenXPath.java, 使用时先用XPath类的静态方法newInstance(String xpath)得到XPath对象,然后调用它的selectNodes(Object context)方法或selectSingleNode(Object context)方法,前者根据xpath语句返回一组节点(List对象);后者根据一个xpath语句返回符合条件的第一个节点(Object类型)。请看jdom-1.0自带的范例程序:
它分析在web.xml文件中的注册的servlet的个数及参数个数,并输出角色名。
web.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?> 
<!-- 
<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"> 
--> 

<web-app> 
 <servlet> 
  <servlet-name>snoop</servlet-name> 
  <servlet-class>SnoopServlet</servlet-class> 
 </servlet> 
 <servlet> 
   <servlet-name>file </servlet-name> 
   <servlet-class>ViewFile</servlet-class> 
   <init-param> 
    <param-name>initial</param-name> 
    <param-value>1000</param-value> 
    <description>The initial value for the counter <!-- optional --></description> 
  </init-param> 
 </servlet> 
 <servlet-mapping> 
   <servlet-name>mv</servlet-name> 
   <url-pattern>*.wm</url-pattern> 
 </servlet-mapping> 
<distributed/> 

<security-role> 
   <role-name>manager</role-name> 
    <role-name>director</role-name> 
    <role-name>president</role-name> 
</security-role> 
</web-app> 



处理程序:
import java.io.*; 
import java.util.*; 
import org.jdom.*; 
import org.jdom.input.*; 
import org.jdom.output.*; 
import org.jdom.xpath.*; 
public class XPathReader { 
     
    public static void main(String[] args) throws IOException, JDOMException { 
        if (args.length != 1) { 
            System.err.println("Usage: java XPathReader web.xml"); 
            return; 
        } 
        String filename = args[0];//从命令行输入web.xml 
        PrintStream out = System.out; 
        SAXBuilder builder = new SAXBuilder(); 
        Document doc = builder.build(new File(filename));//得到Document对象 
        // Print servlet information 
        XPath servletPath = XPath.newInstance("//servlet");//,选择任意路径下servlet元素 
        List servlets = servletPath.selectNodes(doc);//返回所有的servlet元素。 
        out.println("This WAR has "+ servlets.size() +" registered servlets:"); 
        Iterator i = servlets.iterator(); 
        while (i.hasNext()) {//输出servlet信息 
            Element servlet = (Element) i.next(); 
            out.print("\t" + servlet.getChild("servlet-name") 
                                    .getTextTrim() + 
                      " for " + servlet.getChild("servlet-class") 
                                       .getTextTrim()); 
            List initParams = servlet.getChildren("init-param"); 
            out.println(" (it has " + initParams.size() + " init params)");  
        } 
             
        // Print security role information 
        XPath rolePath = XPath.newInstance("//security-role/role-name/text()"); 
        List roleNames = rolePath.selectNodes(doc);//得到所有的角色名 
        if (roleNames.size() == 0) { 
            out.println("This WAR contains no roles"); 
        } else { 
            out.println("This WAR contains " + roleNames.size() + " roles:"); 
            i = roleNames.iterator(); 
            while (i.hasNext()) {//输出角色名 
                out.println("\t" + ((Text)i.next()).getTextTrim()); 
            } 
        } 
    }     
} 

输出结果:
C:\java>java   XPathReader web.xml
This WAR has 2 registered servlets:
        snoop for SnoopServlet (it has 0 init params)
        file for ViewFile (it has 1 init params)
This WAR contains 3 roles:
        manager
        director
        president
分享到:
评论

相关推荐

    JAVA操作XML\XML\Jdom使用指南 java教程 -113e博章.mht

    JAVA操作XML\XML\Jdom使用指南 java教程 -113e博章.mht

    jdom介绍及使用指南

    ### JDOM介绍及使用指南 #### 一、JDOM包概览 JDOM是一个轻量级的Java XML API,它提供了简洁的API用于处理XML文档。JDOM的主要优点在于其简单性和易于使用性,适用于那些希望避免DOM的复杂性和SAX的事件驱动模型...

    JDOM 介绍及使用指南

    JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和...

    jdom的两种版本jar包集合

    - **README.txt**: 提供关于JDOM库的基本信息和使用指南,通常会包含安装步骤、依赖关系以及注意事项等。 - **LICENSE.txt**: 记录了JDOM的许可协议,规定了软件的使用、分发和修改的法律条款。 - **lib**: 可能包含...

    java org.jdom 包下载

    6. **README.txt**:通常提供有关如何使用软件的基本信息,包括安装指南、版本说明等。 7. **LICENSE.txt**:描述了JDOM的许可协议,对于开源项目,这通常是MIT、Apache 2.0或其他类似许可,允许在特定条件下使用、...

    jdom.rar内含多个jdom包

    3. **帮助文档**:这可能包括API文档、用户指南或者教程,它们详细解释了JDOM的各种类和方法,以及如何有效地使用这些工具。对于初学者来说,这是一份非常宝贵的资源,可以帮助他们理解JDOM的工作原理和最佳实践。 ...

    jdom的帮助文档 jdom的帮助文档

    在“jdom_v1[1].1.CHM”帮助文档中,你将找到详细的API参考、示例代码和使用指南,这将有助于你更好地理解和掌握JDOM的使用。通过学习JDOM,你可以更有效地处理XML,提高Web应用的开发效率。同时,JDOM也支持XPath和...

    jdom教程

    **JDOM教程** JDOM,全称为Java Document Object Model,是一个专门为Java设计的XML处理库。它提供了一种高效、方便的...这些文档将覆盖从基本操作到复杂场景的全面指南,帮助您熟练掌握JDOM在XML解析和生成中的应用。

    JDOM讲解(java)

    2. **JDOM**:JDOM作为一种专门针对Java语言设计的API,比DOM更加简洁和易于使用。它仅适用于Java环境,这使得其在Java中的使用体验更为流畅。与DOM相比,使用JDOM进行XML操作通常更为简单快捷。 3. **SAX**:...

    jdom 2.0.0

    二、使用指南 1. **安装与依赖**:在项目中引入JDOM 2.0.0的jar文件,例如`jdom-2.0.0.jar`,可以使用Maven或Gradle等构建工具进行管理。 2. **API使用**:创建XML文档,可以使用`DocumentBuilderFactory`和`...

    用jdom解析xml

    **Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...

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

    4. **README.txt**或类似的文件:包含了关于JDOM-1.1的一些基本信息和安装指南。 5. **LICENSE**:许可证文件,规定了JDOM-1.1的使用权限和条件,由于它是开源软件,通常遵循Apache License 2.0或其他开放源码许可...

    jdom开发Jar包

    6. **文档支持**:JDOM项目提供详细的API文档和用户指南,帮助开发者快速上手并深入理解其工作原理。 **使用JDOM进行XML操作** 1. **解析XML**:通过SAXBuilder或者DOMBuilder,可以将XML字符串或文件解析为JDOM的...

    jdom-2.0.2.zip

    README通常包含安装指南、使用提示和版本变更记录,LICENSE则规定了使用JDOM库的法律条款。 7. **lib**目录:可能包含了JDOM运行所需的其他依赖库,例如SAX和DOM等XML解析器的基础库。 JDOM的核心优势在于它的设计...

    Jdom.rar

    **JDOM的使用步骤** 1. **创建Document对象**:首先,你需要创建一个Document对象,这是XML文档的根节点。你可以使用`DocumentBuilderFactory`和`DocumentBuilder`来实现。 2. **添加元素**:然后,通过`Element`...

    jdom-1.1 资源 精简版

    "read me.txt"文件是每个软件或库的必备部分,它通常包含了使用指南、注意事项以及可能的依赖信息。在JDOM 1.1的资源中,read me.txt文件列出了运行JDOM可能需要的其他JAR包。这很重要,因为JDOM可能会依赖于一些...

    jdom-1.1-all

    2. 文档和API:可能包括用户手册、开发者指南以及详细的API文档,帮助用户了解如何使用JDOM 1.1。 3. 示例代码:可能包含示例程序,展示如何使用JDOM 1.1进行XML操作。 4. 测试类:用于验证库的功能和性能。 学习和...

    Javascript,Actionscript3,css2,DHTML,JDOM,JQuery API开发文档打包下载

    DHTML_Handbook.chm可能包含关于如何使用这些技术创建交互式元素和动画的教程和指南。 5. **JDOM**:Java Document Object Model(JDOM)是Java平台上的一个API,用于读写XML文档。JDOMAPIDOCS.CHM文档提供JDOM的...

    jdom帮助文档

    JDOM项目官网提供完整的API文档、用户指南和示例代码,是学习和解决问题的重要资源。此外,Stack Overflow等技术论坛上也有大量关于JDOM的问题和解答,可以帮助开发者解决实际问题。 总结,JDOM是Java中处理XML的...

    Jdom.chm & Dom4j.chm帮助文档

    《Jdom.chm & Dom4j.chm帮助文档》提供了关于Java中XML处理的重要库——JDOM和DOM4J的详细指南。这两个库是Java开发者处理XML数据时不可或缺的工具,它们都为XML文档对象模型(Document Object Model,简称DOM)提供...

Global site tag (gtag.js) - Google Analytics