`

建立和操作 JDOM 文档

阅读更多
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 的根元素。(如果您使用 参考资料中提供的样本代码,请务必导入 org.jdom.* 。)因为一个 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();

分享到:
评论
1 楼 林中晨雾 2008-12-22  
请教一下,如果xml文件的子节点中有一个xlink:href属性,用jdom该怎么添加了?
xml形式如下:
<?xml version="1.0" encoding="UTF-8"?>

<images>
<image id="red_ma" x="175" y="25" width="30" height="30" xlink:href="xiangqi_2_files/ma1.gif"  />

</images>
现在我要添加一个image元素,其他的属性都好添加,可是xlink:href不能用addContent()和addNamespaceDeclaration(namespace),因为他们都无法达到要求。

相关推荐

    XML解析教程

    JDOM(注意JDOM决不是DOM扩展,虽然名字差不多,但两者平行的关系 )是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM的目的是成为Java特定文档模型,它简化与XML...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 ...

    Java语言基础下载

    JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本标签 422 标题元素 ...

    h_JAVA 2应用编程150例.rar

    实例15 实现多文档视图 37 实例16 使用进度条 39 实例17 使用工具提示 42 实例18 不同界面的风格 43 第2章 Java的二维和三维图形处理 45 实例19 颜色处理 46 实例20 合成效果 47 实例21 多种字体效果 49 实例22 合成...

    Java案例开发锦集

    案例6 利用JDBC-ODBC查看查询结果 第八章 Java与Servlet 案例1 利用Servlet打开非HTML格式的文档 案例2 Servlet和JSP的通信 案例3 Servlet和Servlet的通信 案例4 Servlet动态生成图像 案例5 ...

    java面试题

    52.3. 建立连接池 26 52.4. 连接池内连接的使用与释放 26 52.5. 配置连接池 26 52.6. 配置tomcat 6.0.10连接池 26 52.7. Hibernate实现数据库的连接不同方式: 28 52.8. 有几种开源的数据库连接池: 29 53. 描述一下...

    java应用软件程序设计

    475 实例124 插入和替换表单元素 476 实例125 使用线程与定时 478 实例126 J2ME绘图 480 实例127 基于J2ME的小游戏 483 实例128 建立无线HTTP连接 485 实例129 收发短信 487 实例130 获取基金...

Global site tag (gtag.js) - Google Analytics