JDOM 使用标准的 Java 编码模式。只要有可能,它使用 Java new 操作符而不用复杂的工厂化模式,使对象操作即便对于初学用户也很方便。例如,让我们看一下如何随便使用 JDOM 建立一个简单的 XML 文档。我们将要建立的结构如清单 1 所示。
清单 1. 建立 XML 文档样本
<?xml version="1.0" encoding="UTF-8"?>
<car vin="123fhg5869705iop90">
<!--Description of a car-->
<make>Toyota</make>
<model>Celica</model>
<year>1997</year>
<color>green</color>
<license state="CA">1ABC234</license>
</car>
注意:我们将建立 示例文档,在下面的清单 2 到清单 7 中有详细描述。
开始,让我们先创建一个根元素,并将其添加到文档中:
清单 2. 创建一个 Document
Element carElement = new Element("car");
Document myDocument = new Document(carElement);
这一步创建一个新 org.jdom.Element ,并将其作为 org.jdom.Document myDocument 的根元素。因为一个 XML 文档必须一直有一个唯一的根元素,所以 Document 将 Element 放在它的构造器中。
下一步,添加 vin 属性:
清单 3. 添加一个 Attribute
carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90"));
添加元素也是很简单的。这里我们添加 make 元素:
清单 4. 元素和子元素
Element make = new Element("make");
make.addContent("Toyota");
carElement.addContent(make);
由于 Element 的 addContent 方法返回 Element ,我们也可以这样写:
清单 5. 用简洁形式添加元素
carElement.addContent(new Element("make").addContent("Toyota"));
这两个语句完成了相同的工作。有些人认为第一个示例可读性更好,但是如果您一次建立许多元素,您会觉得第二个示例可读性更好。要完成构建文档:
清单 6. 添加其余的元素
carElement.addContent(new Element("model").addContent("Celica"));
carElement.addContent(new Element("year").addContent("1997"));
carElement.addContent(new Element("color").addContent("green"));
carElement.addContent(new Element("license")
.addContent("1ABC234").addAttribute("state", "CA"));
您会注意到对于 license 元素,我们不但添加了元素的内容,还为其添加了一个属性,表明许可已被发出了这个状态。这是因为 Element 的 addContent 方法总是返回 Element 本身,而不是一个无效的声明。
用同样的方法添加注释部分或其它标准 XML 类型:
清单 7. 添加一条注释
carElement.addContent(new Comment("Description of a car"));
操作文档也是用类似方式。例如,要引用 year 元素,我们使用 Element 的 getChild 方法:
清单 8. 访问子元素
Element yearElement = carElement.getChild("year");
该语句实际上将返回第一个元素名为 year 的子 Element 。 如果没有 year 元素,则调用返回一个空值。注意,我们不必回溯来自任何类似于 DOM Node 接口的返回值 -- Element 的子元素就是 Element 。用类似的方式,我们可把 year 元素从文档中除去:
清单 9. 除去子元素
boolean removed = carElement.removeChild("year");
这次调用将只除去 year 元素;文档的其余部分保持不变。
到目前为止,我们已经涵盖了文档的生成和操作。要将完成的文档输出至控制台,可使用 JDOM 的 XMLOutputter 类:
清单 10. 将 JDOM 转化为 XML 文本
try {
XMLOutputter outputter = new XMLOutputter(" ", true);
outputter.output(myDocument, System.out);
} catch (java.io.IOException e) {
e.printStackTrace();
}
XMLOutputter 有几个格式选项。这里我们已指定希望子元素从父元素缩进两个空格,并且希望元素间有空行。 XMLOutputter 可输出到 Writer 或 OutputStream 。为输出到文件,我们可以简单地将输出行简化为:
清单 11. 使用 FileWriter 输出 XML
FileWriter writer = new FileWriter("/some/directory/myFile.xml");
outputter.output(myDocument, writer);
writer.close();
JDOM解析XML
JDOM解析xml待解析的xml文件如下:
<?xml version="1.0" encoding="gb2312"?>
<books>
<book email=zzjj@163.com>
<name>zzjj</name>
<price>60.0</price>
</book>
</books
解析这个XML文件的Java文件:
public class JDomParse {
public JDomParse(){
String xmlpath="library.xml";
SAXBuilder builder=new SAXBuilder(false);
try {
Document doc=builder.build(xmlpath);
Element books=doc.getRootElement();
List booklist=books.getChildren("book");
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("alterrjzjh");
}
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 JDomParse();
}
}
使用JDOM首先要指定使用什么解析器。如:
SAXBuilder builder=new SAXBuilder(false); 这表示使用的是默认的解析器
得到Document,以后要进行的所有操作都是对这个Document操作的:
Document doc=builder.build(xmlpath);
得到根元素:
Element books=doc.getRootElement();
在JDOM中所有的节点(DOM中的概念)都是一个org.jdom.Element类,当然他的子节点也是一个org.jdom.Element类。
得到元素(节点)的集合:
List booklist=books.getChildren("book");
这表示得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中
遍历List集合
for (Iterator iter = booklist.iterator(); iter.hasNext();) {
Element book = (Element) iter.next();
}
取得元素的属性:
String email=book.getAttributeValue("email");
取得元素book的属性名为“email”的属性值。
取得元素的子元素(为最低层元素)的值:
String name=book.getChildTextTrim("name");
注意的是,必须确定book元素的名为“name”的子元素只有一个。
改变元素(为最低层元素)的值:
book.getChild("name").setText("alterrjzjh");
这只是对Document的修改,并没有在实际的XML文档中进行修改
保存Document的修改到XML文件中:
XMLOutputter outputter=new XMLOutputter();
outputter.output(doc,new FileOutputStream(xmlpath));
分享到:
相关推荐
JDOM,全称为Java Document Object Model,是一种专为Java开发者设计的XML处理库,旨在简化XML编程,提高开发效率。JDOM的出现是为了应对Java XML生态中存在多种API,但缺乏一个直观且易于使用的Java友好型接口的...
"用 JDOM 简化 XML 编程"可能讲述了JDOM,这是另一个Java XML API,提供了更加面向对象的接口来处理XML,使编程更加直观。 最后,"2011版清华IT课程总表.xls"虽然不是直接与XML相关的文件,但它表明XML技术也可以...
其设计理念在于简化XML编程,让开发者能够专注于应用程序的核心逻辑,而不是XML解析的底层细节。通过JDOM,可以方便地实现XML文件的读取、修改和写入,为Java应用程序处理XML数据提供了强大支持。
通过使用JDOM,开发者可以避免直接处理底层的DOM(Document Object Model)或SAX(Simple API for XML)解析器,从而简化XML编程。 在JDOM 1.0中,主要的类和接口包括: 1. **`Element`**: 这是XML文档中元素的...
总的来说,JDOM是Java开发人员处理XML文档的有力工具,它通过其精心设计的API和高效的数据结构,简化了XML的解析、操作和生成过程,使得XML编程在Java环境中变得更加便捷。无论是构建新的XML文档,还是从现有XML源...
在实际开发中,结合具体的业务需求,灵活运用JDOM可以大大简化XML相关的编程任务。如果你想要进一步提升技能,可以尝试研究更多复杂的XML操作,如XPath查询和XSLT转换,这些都是JDOM支持的功能。
JDOM 的设计目标是简化 XML 处理,对比于传统的 SAX 和 DOM 解析器,它具有更友好的编程模型。 在早期版本的 JDOM 中,可能存在编译错误和中文乱码问题。例如,原文提到的作者在使用旧版 JDOM 时遇到这些问题,但...
本文将深入探讨JDOM.jar在XML处理中的核心概念、使用方法以及它如何简化XML操作。 一、JDOM概述 JDOM是专为Java设计的一个DOM(Document Object Model)实现,提供了全面的API来创建、修改和解析XML文档。相比其他...
Java XML编程指南主要涵盖了在Java平台上使用XML技术进行开发的各种概念和实践方法。XML(Extensible Markup Language)是一种用于标记数据的语言,它被广泛应用于数据交换、配置存储以及Web服务等场景。Java作为...
本资料“XML编程技术大全”将全面涵盖XML的基本概念、语法、解析方式以及相关的编程实践。 首先,让我们深入理解XML的基础知识。XML文档由元素构成,元素是XML的最基本单位,用于描述文档结构。每个元素都有开始...
4. **JDOM(Java Document Object Model)**:JDOM是一个纯Java的DOM实现,提供了对XML的更直接的处理,比标准DOM更易于使用,但性能稍逊。 5. **DOM4J**:DOM4J是另一个流行的Java XML库,它提供了丰富的功能,...
本文将深入探讨如何使用JDOM库来生成XML文档,这是一种纯Java的API,设计用于简化XML处理。 JDOM是一个开源项目,它的全称是Java Document Object Model,它为Java程序员提供了一个方便的方式来创建和操作XML文档。...
JDOM 1.1是该库的一个稳定版本,自JDOM 1.0发布以来,它在功能和性能上都进行了改进,旨在简化XML编程,提高开发效率。 XML(eXtensible Markup Language)是一种用于标记数据的标准格式,广泛应用于网络通信、数据...
**JAVA版XML编程详解** XML(Extensible Markup Language),可扩展标记语言,是网络数据交换的重要格式,尤其在Java编程中扮演着不可或缺的角色。本PPT专为清华IT培训中心的课程设计,旨在深入讲解XML的基本概念、...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于Web应用程序、数据交换和配置文件等领域。...理解这些解析方式对于XML编程至关重要,希望本文能对初学者有所帮助。
同时,也可以考虑其他解析库,如StAX(Streaming API for XML),它提供了介于DOM和SAX之间的折衷方案,允许以流式的方式处理XML,既减少了内存消耗,又简化了编程模型。 在处理XML文档时,除了解析方式,还需要...
本文将深入探讨Java中的XML编程,主要涉及以下几个核心知识点: 1. **DOM解析**:DOM(Document Object Model)是XML文档的一种树形表示方式,Java中的`javax.xml.parsers.DocumentBuilderFactory`和`...
在Java技术中,XML编程是不可或缺的一部分,它允许开发者在Java应用程序中处理XML文档,实现数据的读取、写入和解析。本部分我们将深入探讨Java与XML的结合使用,以及如何通过Java技术进行XML编程。 1. **Java中的...
本指南将深入探讨Java XML编程的关键知识点,帮助初学者更好地理解和应用这两者之间的融合。 1. **DOM解析**:DOM(文档对象模型)是Java处理XML的一种方式,它将整个XML文档加载到内存中,形成一棵树形结构。通过...