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,如图:

Jdom的安装和使用_第1张图片

准备以下代码,代码抄自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到如下界面选择

Jdom的安装和使用_第2张图片

生成的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的安装和使用)