用jdom轻松整合java和xml( 转贴)
jdom java
出处 http://www.javaworld.com/javaworld/jw-05-2000/jw-0518-jdom-p1.html
用jdom轻松整合java和xml(二)
获取XML文档
jdom用org.jdom.Document类的一个实例来描述一个XML文档。这个文档类是一个轻重量级的,它可以包括文档类型、多处理指令的对象、一个根元素和注释对象。你可以不需要构造器而从草稿构造一个文档。
Document doc = new Document(new Element("rootElement"));
在下一篇文章中,我们会讨论从草稿构造一个XML文档是多么的容易。但是现在,我们从一个已存在的文件、一个流、或是一个URL路径中构造我们的文档。
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(url);
你可以用org.jdom.input包中提供的构造类从任何数据源中构造文档。最近,有两种构造方式:SAXBuilder 和 DOMBuilder。SAXBuilder用sax解析器从文件中构造文档。SAXBuilder侦听sax事件并从内存中建立一个相应的文档。这种方式非常快(基本上和sax一样快),这也是我们推荐的方式。DOMBuilder是另一种可选的方式,它从一个存在的org.w3c.dom.Document对象中建立JDOM文档。它允许jdom轻松的和构建DOM树的工具实现接口。
Jdom的速度有值得期待的提高的潜力通过一个延期的构造器的完成。这个构造器检查XML数据源,但当请求的时候才对它解析。例如:文档的属性当不访问时是不需要解析的。
构造器仍在发展,可以通sql查询、ldap查询和其他的数据格式来够造jdom文档。所以,一旦进到内存中,文档就和建造它的工具没有关系了。
SAXBuilder 和 DOMBuilder构造器允许用户指明他们是否应该轮换,以便确定哪个解析器时间执行解析的任务。
public SAXBuilder(String parserClass, boolean validation);
public DOMBuilder(String adapterClass, boolean validation);
默认的是用apache的开源 Xerces解析器并且是关闭轮换的。你应该注到DOMBuilder不象一个解析类,倒更象一个适配类。这是因为不是所有的DOM解析器都是相同的api。为了仍让用户选择喜欢的解析器,jdom使用一个对所有的dom解析器适用的公共的api的适配类。这个适配类支持所有流行的dom解析器,包括Apache 的 Xerces, Crimson,IBM 的 XML4J, Sun 的 Project X, 和Oracle 的 parsers V1 and V2.每一个解析器通过正确的调用别的解析器的方法执行标准的接口。这有点象jaxp,除了它支持jaxp所不支持的新的解析器。
输出XML文档
你可以用几种不同的标准输出工具输出一个XML文档。org.jdom.output.XMLOutputter也许是最常用方法。它将xml文档写入一个特定的OutputStream.
SAXOutputter工具是另一个选择。它产生基于jdom xml文档的sax事件,你可以把这些送到等待这些sax事件的应用程序那里。相同的方式,DOMOutputter产生一个dom文档,这样你就可以把它送给可以接收dom文档的应用程序。输出xml文档的代码看起来象下边的样子:
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, System.out);
XMLOutputter用参数定制输出的格式。第一个参数是行缩进的格式;第二个参数是你是否想另起一行。因为机器到机器的原因,为了速度考虑你可以放弃行缩进和另起新行。
XMLOutputter outputter = new XMLOutputter("", false);
outputter.output(doc, System.out);
(译注:这样的话自己看起来会很不好看,而且每一次重新写入的时候都会使这个xml文件变大,所以我建议还是要缩进和另起一行,支持中文的带换行和缩进的格式如下:
XMLOutputter outp = new XMLOutputter(“”,true,"GB2312");
outp.setTextTrim(true);
outp.output(doc, System.out);
可以参见以前我写的jdom的文章http://www.csdn.net/Develop/read_article.asp?id=20720)
下面是读入一个xml文档,并把它又输出的例子:
import java.io.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
public class PrettyPrinter {
public static void main(String[] args) {
// Assume filename argument
String filename = args[0];
try {
// Build the document with SAX and Xerces, no validation
SAXBuilder builder = new SAXBuilder();
// Create the document
Document doc = builder.build(new File(filename));
// Output the document, use standard formatter
XMLOutputter fmt = new XMLOutputter();
fmt.output(doc, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
====================
好文转载,以备后用。
该文章,还未详细消化,需要以后细看。
分享到:
相关推荐
**Java与XML:JDOM解析XML...通过JDOM,可以轻松地解析、修改和生成XML内容。在JSP环境中,这些操作可以帮助创建动态的Web应用,实现与XML数据的交互。通过实践和理解这些基本概念,你可以更好地掌握Java中的XML处理。
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于Web应用程序、数据交换和配置文件等领域。本文将详细讲解四种解析XML文件的方法,旨在帮助初学者更好地理解和掌握XML处理技术。 ...
而Java与XML数据库的整合则意味着使用Java技术来读取、写入和管理基于XML的数据库。 1. **Java API for XML Processing (JAXP)**: JAXP是Java平台的标准API,用于解析和转换XML文档。它包括了DOM(Document Object ...
书中可能包含了XML的基础语法、解析机制,Java API对于XML的支持,如DOM、SAX和StAX解析器的使用,以及更高级的JAXB(Java Architecture for XML Binding)和JDOM等库的介绍。此外,可能还会讨论到XPath、XSLT和...
综上所述,"Spring+iBatis+JDom递归生成XML树"这个项目展示了如何整合这三个工具来处理复杂数据的序列化。通过Spring管理依赖,iBatis处理数据库交互,JDom构建XML结构,实现了高效、灵活的XML生成方案。这对于需要...
JDOM是Java程序员处理XML文档的首选工具之一,因为它完全用Java编写,与Java平台无缝集成,避免了其他XML解析器可能存在的性能和兼容性问题。 首先,我们来看看JDOM的基本使用。JDOM通过SAX(Simple API for XML)...
JDOM是Java文档对象模型(Java Document Object Model)的简称,它提供了一种简便的方式来解析、创建和操作XML文档。 - **Element**: 用于表示XML文档中的元素。 - **Attribute**: 表示XML元素的属性。 - **...
相比于DOM(Document Object Model)和SAX(Simple API for XML),JDOM更符合Java编程习惯,因为它完全用Java语言实现,使得开发者可以更自然地处理XML数据。 1. **核心概念** JDOM的核心概念包括Element(元素...
相比于DOM(Document Object Model)标准,JDOM更专注于Java平台,因此它能够更好地整合Java编程环境,并且在性能和内存消耗方面有所优化。 **2. JDOM的功能** - **解析XML**:JDOM提供了SAX和DOM两种方式来解析XML...
本篇将深入探讨"使用Java技术的XML高级开发",揭示如何利用Java与XML进行深度整合,实现高效的数据交换和处理。 一、XML基础 XML的设计目标是使数据更具可读性和可维护性,通过自定义标签来描述数据结构。在Java中...
在Java编程中,合并XML1是一项常见的任务,特别是在处理大量数据或者需要整合多个XML源时。XML(Extensible Markup Language)是一种用于标记数据的语言,它提供了结构化的方式来存储和交换信息。下面,我们将深入...
在Java中,我们可以使用DOM、SAX或JDOM等API来解析和操作XML文档。 2. **JDOM**:JDOM是Java中处理XML的一个库,它提供了创建、修改和读取XML文档的方法。在本案例中,JDOM被用来将XML文件解析为内存中的对象结构,...
在Java中,有多种库可用于处理XML,如DOM、SAX和StAX,以及第三方库如JDOM和dom4j。本例中提到的"dom4j"是一个流行的Java XML处理库,它提供了灵活、高效的方式来操作XML文档。 封装XML读取的Java类一般包括以下几...
JDOM是一个用于处理XML文档的Java API,它提供了高效、灵活且易于使用的接口来构建和访问XML文档。 JDOM的主要功能包括: 1. 解析XML文档:通过SAX或DOM方式将XML文件加载为JDOM对象。 2. 创建XML文档:生成新的XML...
SSH整合在Java开发中指的是Spring、Struts和Hibernate三个开源框架的集成,这些框架分别负责控制层、业务逻辑层和数据持久化层的功能。Spring是核心,提供依赖注入(DI)和面向切面编程(AOP),Struts作为MVC框架...
Java提供了丰富的API来处理XML文档,例如DOM、SAX和JDOM等。 - **与Web开发的整合** 在Web开发中,XML可以用于存储和传输数据,同时还可以使用XSLT将XML数据转换成HTML页面进行展示。 通过以上内容的介绍,我们...
将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web Services,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。 《疯狂XML...
将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web Services,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。 本书是疯狂...
将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web Services,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。 本书是疯狂...
将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web Services,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。 本书是疯狂...