- 浏览: 325199 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
杞哈哈:
你好。我是个新手。去官网也没下载下来那个服务器端。有现成的吗? ...
初探JAXER -
sl514:
http://www.bejson.com
JSON学习 -
sl514:
你可以使用JSON在线格式化、校验、视图工具 http://w ...
JSON学习 -
srg23:
好像在FF下不兼容。
教你怎么使网页全部变成灰色的! -
vera_sq:
你的方法我试过,还是不行呢!
AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题
在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。
因为 JDOM 对象就是像 Document、Element 和 Attribute 这些类的直接实例,因此创建一个新 JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。
JDOM 使用标准的 Java 编码模式。只要有可能,它使用 Java new 操作符而不故弄玄虚使用复杂的工厂化模式,使对象操作即便对于初学用户也很方便。
本文分两步对JDOM的应用加以介绍:XML创建 和 XML解析
一、XML文档创建
我们由零开始利用JDOM生成一个XML文档。最后的结果(样本文档)看起来象这样:
<?xml version="1.0" encoding="UTF-8"?> <MyInfo comment="introduce myself"> <name>kingwong</name> <sex value="male"/> <contact> <telephone>87654321</telephone> </contact> </MyInfo>
1.以 MyInfo 为根元素创建文档
Element rootElement = new Element("MyInfo");//所有的XML元素都是 Element 的实例。根元素也不例外:)
Document myDocument = new Document(rootElement);//以根元素作为参数创建Document对象。一个Document只有一个根,即root元素。
2.给根元素添加属性
Attribute rootAttri = new Attribute("comment","introduce myself");//创建名为 commnet,值为 introduce myself 的属性。
rootElement.setAttribute(rootAttri);//将刚创建的属性添加到根元素。
这两行代码你也可以合成一行来写,象这样:
rootElement.setAttribute(new Attribute("comment","introduce myself"));
或者
rootElement.setAttribute("comment","introduce myself");
3.添加元素和子元素
JDOM里子元素是作为 content(内容)添加到父元素里面去的,所谓content就是类似上面样本文档中<name></name>之间的东东,即kingwong。罗嗦了点是吧:)
Element nameElement = new Element("name");//创建 name 元素
nameElement.addContent("kingwong");//将kingwong作为content添加到name元素
rootElement.addContent(nameElement);//将name元素作为content添加到根元素
这三行你也可以合为一句,象这样:
rootElement.addContent((Content)(new Element("name").addContent("kingwong")));//因为addContent(Content child)方法返回的是一个Parent接口,而Element类同时继承了Content类和实现了Parent接口,所以我们把它造型成Content。
我们用同样的方法添加带属性的子元素<sex value="male"/>
rootElement.addContent(new Element("sex").setAttribute("value","male"));//注意这里不需要转型,因为addAttribute(String name,String value)返回值就是一个 Element。
同样的,我们添加<contract />元素到根元素下,用法上一样,只是稍微复杂了一些:
rootElement.addContent((Content)(new Element("contact").addContent((Content)(new Element("telephone").addContent("87654321")))));
如果你对这种简写形式还不太习惯,你完全可以分步来做,就象本节刚开始的时候一样。事实上如果层次比较多,写成分步的形式更清晰些,也不容易出错。
4.删除子元素
这个操作比较简单:
rootElement.removeChild("sex");//该方法返回一个布尔值
到目前为止,我们学习了一下JDOM文档生成操作。上面建立了一个样本文档,可是我们怎么知道对不对呢?因此需要输出来看一下。我们将JDOM生成的文档输出到控制台,使用 JDOM 的 XMLOutputter 类。
5. 将 JDOM 转化为 XML 文本
XMLOutputter xmlOut = new XMLOutputter(" ",true); try { xmlOut.output(myDocument,System.out); } catch (IOException e) { e.printStackTrace(); }
XMLOutputter 有几个格式选项。这里我们已指定希望子元素从父元素缩进两个空格,并且希望元素间有空行。
new XMLOutputter(java.lang.String indent, boolean newlines)这个方法在最新版本中已经不建议使用。JDOM有一个专门的用来定义格式化输出的类:org.jdom.output.Format,如果你没有特殊的要求,有时候使用里面的几个静态方法(应该可以说是预定义格式)如 getPrettyFormat()就可以了。我们把上面的输出格式稍微改一下,就象这样:
XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
6.将JDOM文档转化为其他形式
XMLOutputter 还可输出到 Writer 或 OutputStream。为了输出JDOM文档到一个文本文件,我们可以这样做:
FileWriter writer = new FileWriter("/some/directory/myFile.xml"); outputter.output(myDocument, writer); writer.close();
XMLOutputter 还可输出到字符串,以便程序后面进行再处理:
Strng outString = xmlOut.outputString(myDocument);
当然,在输出的时候你不一定要输出所有的整个文档,你可以选择元素进行输出:
xmlOut.output(rootElement.getChild("name"),System.out);
一句话,JDOM非常灵活方便!如果你想进一步研究JDOM,请到官方网站去看一看:http://www.jdom.org
本节示例源码:
package com.cyberobject.study; import java.io.IOException; import org.jdom.Attribute; import org.jdom.Content; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class TestJDOM { public static void main(String[] args) { Element rootElement = new Element("MyInfo"); Document myDocument = new Document(rootElement); // Attribute rootAttri = new Attribute("comment","introduce myself"); // rootElement.setAttribute(rootAttri); rootElement.setAttribute("comment","introduce myself"); //rootElement.setAttribute(new Attribute("comment","introduce myself")); // Element sexElement = new Element("sex"); // rootElement.addContent(sexElement); // Element nameElement = new Element("name"); // nameElement.addContent("kingwong"); // rootElement.addContent(nameElement); rootElement.addContent((Content)(new Element("name").addContent("kingwong"))); rootElement.addContent(new Element("sex").setAttribute("value","male")); rootElement.addContent((Content)(new Element("contract").addContent((Content)(new Element("telephone").addContent("87654321"))))); rootElement.removeChild("sex"); XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat()); try { xmlOut.output(myDocument,System.out); //xmlOut.output(rootElement.getChild("name"),System.out); //String outString = xmlOut.outputString(myDocument); } catch (IOException e) { e.printStackTrace(); } } }
二、XML文档解析
JDOM 不光可以很方便的建立XML文档,它的另一个用处是它能够读取并操作现有的 XML 数据。
JDOM的解析器在org.jdom.input.*这个包里,其中的DOMBuilder的功能是将DOM模型的Document解析成JDOM模型的Document;SAXBuilder的功能是从文件或流中解析出符合JDOM模型的XML树。由于我们经常要从一个文件里读取数据,因此我们应该采用后者作为解析工具。
解析一个xml文档,基本可以看成以下几个步骤:
1.实例化一个合适的解析器对象
本例中我们使用SAXBuilder:
SAXBuilder sb = new SAXBuilder();
2.以包含XML数据的文件为参数,构建一个文档对象myDocument
Document myDocument = sb.build(/some/directory/myFile.xml);
3.获到根元素
Element rootElement = myDocument.getRootElement();
一旦你获取了根元素,你就可以很方便地对它下面的子元素进行操作了,下面对Element对象的一些常用方法作一下简单说明:
getChild("childname") 返回指定名字的子节点,如果同一级有多个同名子节点,则只返回第一个;如果没有返回null值。
getChildren("childname") 返回指定名字的子节点List集合。这样你就可以遍历所有的同一级同名子节点。
getAttributeValue("name") 返回指定属性名字的值。如果没有该属性则返回null,有该属性但是值为空,则返回空字符串。
getChildText("childname") 返回指定子节点的内容文本值。
getText() 返回该元素的内容文本值。
还有其他没有罗列出来的方法,如果需要的话,可以随时查阅JDOM的在线文档:http://www.jdom.org/docs/apidocs/index.html。当然你可以在你需要的地方添加、删除元素操作,还记得上面的创建XML的方法吗?呵呵~~~
学习新东东还是从实例学起最为快捷,下面简单举个例子,就以上面的XML样本代码来学习JDOM的XML解析。本例中读取了样本XML文件里一些属性和content,最后我们还在contact元素里插入了一个新元素<email value="wanghua@cyberobject.com" />。尽管我们实现了对于XML的基本操作,细心的朋友可能会
有疑问:如果XML文档的层次稍微复杂一些,如果嵌套多达几十上百层的话(开个玩笑),如果靠这样从根元素一级一级地通过getChild("childname")来访问子元素的话,将会非常痛苦!是的,的确是这样,但是我们有另一个有力的工具XPath,为什么不用呢?这是后话!先卖个关子(手敲累啦,下回吧,呵呵)。
package com.cyberobject.study; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class TestJDOM2 { public static void main(String[] args){ SAXBuilder sb = new SAXBuilder(); try { Document doc = sb.build("myFile.xml"); Element root = doc.getRootElement(); String str1 = root.getAttributeValue("comment"); System.out.println("Root Element's comment attribute is : " + str1); String str2 = root.getChild("sex").getAttributeValue("value"); System.out.println("sex Element's value attribute is : " + str2); String str3 = root.getChildText("name"); System.out.println("name Element's content is :" + str3); String str4 = root.getChild("contact").getChildText("telephone"); System.out.println("contact Element's telephone subelement content is : " + str4 + "\n"); Element inputElement = root.getChild("contact"); inputElement.addContent(new Element("email").setAttribute("value","wanghua@cyberobject.com")); XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat()); String outStr = xmlOut.outputString(root); System.out.println(outStr); } catch(Exception e) { e.printStackTrace(); } } }
发表评论
-
先进的开发框架—理解什么是Spring
2008-08-01 15:15 3030一、 Spring诞生Spring是 ... -
java版本的escape和unescape函数
2008-08-01 10:54 1203java版本的escape和unescape函数 cl ... -
java中的URLEncoder和URLDecoder类
2008-07-11 00:31 1152/* 网页中的表单使用POST方法提交时,数据内容的 ... -
JDOM 介绍及使用指南
2008-07-11 00:10 1154一、JDOM 简介JDOM是一个开源项目,它基于树型结构,利用 ... -
Java生成UUID
2008-07-01 16:15 1843UUID(Universally Unique Identif ... -
JSON 基础
2008-06-26 10:45 1008JSON 基础简单地说,JSON 可以将 JavaScript ... -
DatabaseMetaData
2008-05-07 14:19 1181package com.rongji.demo; import ... -
JspSmart之upload组件源码及使用
2008-04-23 16:24 2034一、安装篇 jspsmartupload是由www ... -
Hibernate的主键生成机制
2008-04-10 11:38 1126配置Hibernate的主键生成 ... -
session与cookie关系
2008-04-10 11:36 3223具体来说cookie机制采用的是在客户端保持状态的方案。它是在 ... -
cookie和session
2008-04-10 11:30 797一、cookie机制和session机制的区别******** ... -
有用的国外开源项目网址
2008-04-10 11:29 2458sourceforge http://www.sourcefo ... -
hibernate包作用详解
2008-04-10 11:27 862Hibernate一共包括了23个ja ... -
servlet中 web.xml的配置问题!
2008-04-10 10:56 1234表单中: <form action="/工程名 ... -
页面乱码解决4种方案
2008-04-10 09:48 1702下边提供4种不同情况的乱码解决方案,基本上包括了web开发中出 ... -
jsp编码讨论
2008-04-09 18:01 1079为每个jsp页面设置了其 ... -
JSP中tomcat的SQL Server2000数据库连接池的配置
2008-04-09 17:38 1251JSP中tomcat的SQL Server2000数据库连接池 ... -
Java中ResultSet对象里的问题
2008-02-27 12:58 1766public static void main(String ...
相关推荐
JDOM处理XML快速上手 - Web UI Design - JavaEye技术网站.mht
这个库提供了丰富的功能,能够满足大部分XML处理需求,同时它的API简洁直观,使得开发人员能快速上手。在实际应用中,结合JDOM与其他工具,如XPath表达式来查询XML数据,可以进一步提高代码的灵活性和效率。
JDOM的主要优势在于其简单易用的API设计,使得开发者能够快速上手并高效地进行XML处理任务。 为了使用JDOM,首先需要将其加入到项目的依赖库中。如果使用Maven项目,可以在`pom.xml`文件中添加以下依赖: ```xml ...
这种方法使得 JDOM 对象的操作非常简单,即使是初学者也能快速上手。 #### 三、XML 文档创建 接下来,我们将通过具体的步骤演示如何使用 JDOM 创建 XML 文档。以下面的例子为例: ```xml <?xml version="1.0" ...
**JDOM 操作 XML 文档详解** XML (eXtensible Markup Language) 是一种用于标记数据的语言,广泛应用于数据交换、配置文件等场景。...对于初学者来说,这是一个很好的起点,可以快速上手 XML 的处理。
DOM4J和JDOM是Java中处理XML的主要库,提供了XML的解析、创建和修改功能。 JDOM是Java中一个专注于XML处理的库,它提供了一种简单和直接的方式来构建和操作XML文档。在提供的`parse()`方法中,可以看到如何使用JDOM...
5. **易于使用**:JDOM的API设计直观,使得开发者能够快速上手。 在实际应用中,JDOM可以用于各种场景,比如配置文件管理、数据交换、报告生成等。例如,如果你有一个XML配置文件,你可以使用JDOM来读取、修改配置...
JDOM,全称为Java Document Object Model,是一种专为Java设计的XML处理库。它提供了一种方便、高效的方式来创建、构建、修改和读取XML文档。JDOM的主要目标是简化XML处理,使得开发者能更直观地操作XML数据,而无需...
文档详细解释了每个类、接口和方法的用法,帮助开发者快速上手。 总结,JDOM 1.1.2 是一个强大且易于使用的 XML 处理库,特别适合 Java 开发者。其提供的 API 允许开发者高效地操作 XML 文档,而配套的帮助文档则...
JDOM 1.1的官方文档详尽全面,包含了大量的示例代码和教程,帮助开发者快速上手。同时,活跃的社区提供了丰富的资源和问题解答,使得学习和使用JDOM变得更加容易。 总的来说,JDOM 1.1作为Java处理XML的首选库之一...
3. **API设计**: JDOM 1.1.3的API设计注重易用性和一致性,使得开发者可以快速上手,进行XML文档的操作。例如,`Element`类代表XML元素,`Attribute`类表示属性,而`Document`类则封装了整个XML文档。 4. **性能...
6. **文档支持**:JDOM项目提供详细的API文档和用户指南,帮助开发者快速上手并深入理解其工作原理。 **使用JDOM进行XML操作** 1. **解析XML**:通过SAXBuilder或者DOMBuilder,可以将XML字符串或文件解析为JDOM的...
6. **示例代码**(如果包含):演示如何使用JDOM-1.1进行XML操作的代码示例,有助于快速上手。 **使用JDOM-1.1** 在Java项目中,你可以通过以下步骤使用JDOM-1.1: 1. 添加jdom.jar到项目的类路径。 2. 引入必要...
JDOM,全称为Java Document Object Model,是一种专为Java设计的XML处理库。...配合API文档,开发者可以快速上手并有效地处理XML数据。如果你的项目涉及XML文件的读取和操作,JDOM是一个值得考虑的库。
总结来说,"XML解析,简单易学(Jdom+XPath): 精简Demo(含jar包).rar"这个压缩包提供了使用JDOM2和XPath处理XML的实例,适合初学者快速上手,同时也可作为进阶开发者参考的代码示例。通过这个示例,你可以学习到...
Java在处理XML文档时,经常会使用到解析库,其中Dom4j和JDom是两个非常重要的选择。这两个库都是基于Java的DOM(Document Object Model)实现,提供了方便的方式来读取、写入、修改XML文件。下面我们将详细探讨这两...
JDOM和DOM4J则为Java开发者提供了更便捷的XML操作工具,特别是JDOM对于Java开发者来说更易上手,而DOM4J提供了更丰富的功能和灵活性。在实际开发中,可以根据项目需求和团队成员的技能来权衡选择。
3. **易于使用**:API设计直观,降低了学习曲线,使得开发者能快速上手。 4. **灵活性**:支持SAX和DOM两种解析模式,可以根据需求选择最适合的方式。 在实际应用中,JDOM2常用于XML配置文件的读写、数据交换、Web...
2. 简单性:JDOM的设计更为直观,对于初学者来说可能更容易上手。 3. 功能:DOM4j支持XPath,提供了更丰富的查询功能,而JDOM的查询机制相对简单。 4. 社区支持:DOM4j由于其广泛的应用和活跃的社区,拥有更多的文档...
2. **易于使用**:其设计简洁,使得开发者能够快速上手,通过直观的API实现XML文档的读写。 3. **XPath支持**:DOM4J内置了对XPath的支持,允许开发者使用XPath表达式来定位和操作XML节点。 4. **文档模型**:DOM4J...