java解析xml之二:使用JDOM

本文介绍了一种用于解析XML的Java工具包JDOM。该工具包专为Java设计,简化了XML文档的操作流程,并提供了直观易用的API。文章通过一个具体示例展示了如何使用JDOM读取和修改XML文件。

一.简介

    JDOM是一种解析XML的Java工具包。 它由Breet Mclaughlin和Jason Hunter在2000年初作为一个开放源代码项目正式开始研发。DOM适合于当今流行的各种语言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。它了为HTML和XML文档提供了一个可应用于不同平台的编程接口。 DOM的设计为了适用于不同的语言,它保留了不同语言中非常相似的API。但是它并不适合于Java编程者的习惯。而JDOM作为一种轻量级API被制定,它最核心的要求是以Java为中心,只适合于Java语言,它遵循DOM的接口主要规则,除去了DOM中为了兼容各语言而与Java习惯的不同。

    在JDOM 中,XML元素就是Element 的实例,XML属性就是Attribute 的实例,XML 文档本身就是Document 的实例。因为JDOM 对象就是像Document、Element 和 Attribute 这些类的直接实例,因此创建一个新JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。JDOM 使用标准的 Java 编码模式。只要有可能,它使用 Java new 操作符而不故弄玄虚使用复杂的工厂化模式,使对象操作即便对于初学用户也很方便。

二.安装JDOM

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

    2.将解压后的jdom.jar文件放至项目的类路径中,或可以作为附加包在项目中附加。

三.实例

1.所需xml文件

Text.xml
<?xml version="1.0" encoding="UTF-8"?>   <books>     <book email="zeh2007@126.com">     <name>C++编程思想</name>     <price>60.0</price>     </book>   </books>  

2.解析xml

package jdomParser;       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;          public class JDomParser {        public JDomParser() {            String xmlpath="Test.xml";            //指定解析器            SAXBuilder builder=new SAXBuilder(false);            try {                //得到Document                Document doc=builder.build(xmlpath);                //得到根元素                Element books=doc.getRootElement();                //得到元素(节点)的集合                List booklist=books.getChildren("book");                //轮循List集合                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("C++编程思想");                    String price=book.getChildTextTrim("price");                    System.out.println(price);                    book.getChild("price").setText("60.0");                 }                 //保存Document的修改到XML文件中                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 JDomParser();        }    }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值