java xml解析 jdom_Java XML解析工具 JDOM介绍及使用实例

本文介绍了JDOM,一种Java开发中用于快速处理XML的工具,它弥补了DOM和SAX的不足,提供易用的API进行文档创建、解析和修改。通过实例演示了如何使用JDOM构建和解析XML文档,以及其与DOM和SAX的区别。
摘要由CSDN通过智能技术生成

Java XML解析工具 JDOM

JDOM介绍

JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序。

它的设计包含Java语言的语法乃至语义。

JDOM是一个开源项目,它基于树形结构,利用纯Java的技术对XML文档实现解析、生成、序列化及多种操作。

JAXP

JAXP(用于XML语法分析的Java API)包含了三个包:

org.w3c.dom

W3C推荐的用于XML标准文档对象模型的Java工具。

org.xml.sax

用于对XML进行语法分析的事件驱动的简单API。

javax.xml.parsers

工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具,JDOM能够替换org.w3c.dom软件包来有计划地操作XML文档。

JDOM和DOM及SAX的关系

JDOM主要用来弥补DOM和SAX在实际应用当中的不足。

主要是SAX没有文档修改、随机访问及输出的功能;

而DOM,Java程序员在使用时总觉得不太方便(比如DOM定义了自己的Text类而不是使用Java的String)。

DOM的局限性:

DOM的缺点主要是由于DOM是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为Java特别设计的。

DOM API沿袭了XML规范,在XML中,每件东西都是一个结点,因此在DOM中找到的几乎每件东西都基于Node接口。

就多态性来讲,它是优秀的,但鉴于如上解释,它在Java语言中的应用是困难而且不便的,其中从Node向叶类型作显式向下类型转换会导致代码的冗长和难以理解。

JDOM是作为一种轻量级的API被制定的,最主要的是它是以Java为中心的。它在遵循DOM主要规则的基础上除去了上述缺点。

JDOM是Java平台专用的,只要有可能,API都使用Java语言的内建String支持。

在JDOM中,XML元素就是Element的实例,XML属性就是Attribute的实例,XML文档本身就是Document的实例。

类驱动:因为JDOM对象就是像Document、Element和Attribute这些类的直接实例,因此创建一个新的JDOM对象就如在Java语言中使用new操作符一样容易。

它还意味着不需要进行工厂化接口配置——JDOM的使用是直截了当的。

JDOM使用程序实例

实例1,使用JDOM,用Java代码构造一个XML文档:

注:使用前需要下载JDOM的jar包(我用的是jdom-2.0.5.jar)并且把它加载在类路径里面(Properties->Java Build Path -> Add External JARs...)

Java程序如下,详细说明见代码注释:

packagecom.example.xml.jdom;importjava.io.FileOutputStream;importorg.jdom2.Attribute;importorg.jdom2.Comment;importorg.jdom2.Document;importorg.jdom2.Element;importorg.jdom2.output.Format;importorg.jdom2.output.XMLOutputter;/*** 使用JDOM构造一个XML文档,并输出

**/

public classJDOMTest1

{public static void main(String[] args) throwsException

{//文档

Document document = newDocument();//生成一个元素

Element root = new Element("root");//将生成的元素加入文档:根元素

document.addContent(root);//给结点加上注释

Comment comment = new Comment("This is my comments");

root.addContent(comment);//加上子元素1

Element e = new Element("hello");//加属性

e.setAttribute("sohu", "www.sohu.com");

root.addContent(e);//加子元素2

Element e2 = new Element("world");

Attribute attribute= new Attribute("testAttr", "attr Value");

e2.setAttribute(attribute);//set方法会返回元素本身(方法链method chain style)

root.addContent(e2);

e2.addContent(new Element("subElement").setAttribute("a", "aValue")

.setAttribute("x", "xValue").setAttribute("y", "yValue")

.setText("textContent"));//格式化

Format format =Format.getPrettyFormat();//Format.getRawFormat()方法,通常用于XML数据的网络传输,因为这种格式会去掉所有不必要的空白,因此能够减少数据量//可以自己设定一些format的属性

format.setIndent(" ");//把缩进设为四个空格(默认为两个空格)//输出

XMLOutputter out = newXMLOutputter(format);

out.output(document,new FileOutputStream("jdom.xml"));//可在当前项目路径下找到

}

}

刷新后可以看到项目路径下生成了文档jdom.xml:

textContent

实例2,使用JDOM解析并操纵XML文档:

就读入上面创建的文档,Java代码:

packagecom.example.xml.jdom;importjava.io.File;importjava.io.FileWriter;importjava.util.List;importorg.jdom2.Attribute;importorg.jdom2.Document;importorg.jdom2.Element;importorg.jdom2.input.SAXBuilder;importorg.jdom2.output.Format;importorg.jdom2.output.XMLOutputter;/*** 读取一个XML文档

**/

public classJDOMTest2

{public static void main(String[] args) throwsException

{//构造器

SAXBuilder saxBuilder = newSAXBuilder();//获取文档

Document document = saxBuilder.build(new File("jdom.xml"));//得到根元素

Element element =document.getRootElement();

System.out.println("Root: " +element.getName());//获取子元素

Element hello = element.getChild("hello");

System.out.println("child: " +hello.getName());//获取属性

List list =hello.getAttributes();for (int i = 0; i < list.size(); ++i)

{

Attribute attr=(Attribute) list.get(i);

String attrName=attr.getName();

String attrValue=attr.getValue();

System.out.println("hello的属性: " + attrName + " = " +attrValue);

}//移除一个元素

element.removeChild("world");//设定格式

XMLOutputter out = newXMLOutputter(Format.getPrettyFormat().setIndent(" "));

out.output(document,new FileWriter("jdom2.xml"));//FileWriter和FileOutputStream都能用

}

}

另存后的jdom2.xml:

参考资料

圣思园张龙老师XML教学视频。

JDOM官方网站:

JDOM 2.0.5(目前2013.06.02最新版)文档:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、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、付费专栏及课程。

余额充值