Jdom的安装和使用

    事情起因:昨天搞了个任务,转移代码,结果隔壁项目组用的是dom4j库,我们部件用的是jdom库,结果对于没搞过xml解析的还是有点难度,不过还好看代码还是大致能懂,不过两个库还是有点差异,下班在即就没搞,回来之后,想试下jdom库,于是广泛搜索资料整理一下,非常感谢那么多的贡献者,考虑到对于从未使用过的来说,貌似缺少一个足够详细的资料,于是整理了一下。

 

一、Jdom的下载和安装

    可至jdom官网http://www.jdom.org下载,目前最新的是2.05,不过要是怀旧用了jdk1.2到1.4,也可以用1.1.3,不得不说,老外的开源软件的确是好。上次搞gcc2.85去编译raw的时候,发现那作者居然从1998年维护到2002年,不容易啊!

    使用两个版本,区别只是导出包的时候,包名是org.jdom还是org.jdom2;下载后,将jdom.jar(2.05版为jdom-2.0.5.jar,解压后即可见到;1.1.3版为jdom-1.1.3.jar,解压后在build目录下),将jar文件放到一个可靠的位置,相对专业的位置是classpath,比如楼主参考放在了C:\Program Files\Java\jre6\lib\ext,实际上,这个位置可以任意,因为是需要添加jar文件路径工场的build path的,不过编程也需要专业一点,以及方便归档,所以建议还是放到lib/ext。至此,安装完毕

 

二、Jdom使用准备—生成XML文件

   新建工程GenerateXML,并添加jar文件至工程build path,如图:

准备以下代码,代码抄自ltb6w

/*
 * 作者:ltb6w
 * blog:http://hi.baidu.com/ltb6w
 * 引用人:coder_xia
 */

package net.csdn.blog;

import java.io.*;
import org.jdom.*;
import org.jdom.output.*;
public class GenerateXML
{
    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
    {
    	GenerateXML w = new GenerateXML();
        System.out.println("Now we build an XML document .....");
        w.BuildXML();
        System.out.println("finished!");
    }
}


不过此时eclipse会有报错:

Access restriction: The type Element is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\ext\jdom-1.1.3.jar

对于这个问题,删除build path里的JRE System Library再添加即可,Add Library——JRE System Library到如下界面选择

生成的xml文件内容如下:

<?xml version="1.0" encoding="gb2312"?>
<student-info>
    <student>
        <number>001</number>
        <name>lnman</name>
        <age>24</age>
    </student>
</student-info>


 

三、XML文件解析

    新建XMLParse工程

/*
 * 作者:ltb6w
 * blog:http://hi.baidu.com/ltb6w
 * 引用人:coder_xia
 */

package net.csdn.blog;

import org.jdom.input.*;
import org.jdom.*;
import java.util.*;
public class XmlParse
{
   
    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();
        }      
    }
}

    搞定! 

    在读取xml文件时,记得dom4j有elementtext方法,直接获取每一个Element的属性值即可,而jdom的解析貌似都是从根节点开始再getChildText获取节点值,各有所长吧。

 

参考网址:

1、http://hi.baidu.com/ltb6w/item/3a5cf11926fda60ce75c361a

2、http://liuwentao.iteye.com/blog/59978

 

一、JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。 JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来,以弥补DOM及SAX在实际应用当中的不足之处。 这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便。 DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。 二、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 类说明 1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef Namespace ProscessingInstruction Text 2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类 JDOMSource JDOMResult org.JDOM.input 3、输入类,一般用于文档的创建工作 SAXBuilder DOMBuilder ResultSetBuilder org.JDOM.output 4、输出类,用于文档转换输出 XMLOutputter SAXOutputter DomOutputter JTreeOutputter 使用前注意事项: .........
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值