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();

建立和操作 JDOM 文档相关推荐

  1. [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档

    [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档 楼主  发表于 2013-5-21 22:00:51 | 查看: 475| 回复: 0 使用DOM创建和操作XML文档 版权声明 该 ...

  2. poi操作word文档总结

    POI分段落生成纯Word动态模板并导入数据 导出数据,可以用word另存为xml格式的ftl文件,变量用${变量名}表示,然后在类中通过 freemarker去替换变量. 但是怎么导入word数据. ...

  3. C#操作Word文档

    1.c#操作word 在指定书签插入文字或者图片 using Word = Microsoft.Office.Interop.Word; object Nothing = System.Reflect ...

  4. 利用python操作word文档

    总目录:Python数据分析整理 本文代码参考自官方文档: python-docx 使用的库下载方式为:pip install python-docx 注意!! 不是:pip install docx ...

  5. 使用PHPDoc轻松建立你的PEAR文档

    PEAR:使用PHPDoc轻松建立你的PEAR文档 潘凡 ( nightsailer@hotmail.com), 工程师, 北京赛迪数据有限公司 简介: 对于一个开发人员,文档总是最感到头疼的事情之一 ...

  6. poi操作PPT文档总结

    POI操作PPT文档1 注意ppt模板不能使用${user}--这样的作为替换标识,在读取PPT模板时会解析成三段文本1.${ 2.user  3.},而一般在控件中使用%1$S这样的方式做为替换标识 ...

  7. python操作word文档(python-docx)

    python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...

  8. pythondocx模板_python操作docx文档(转)

    关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很出名的一个工具"pa ...

  9. 用python处理excel-使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

最新文章

  1. linux POSIX 信号集,读书笔记:第10章 Posix信号量 (6)
  2. ashx是什么文件,如何创建
  3. python浏览器自动化测试库【2018/7/27-更新】
  4. Faster_RCNN 4.训练模型
  5. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
  6. 详解Adorner Layer(zz)
  7. 跟几个程序员聊了聊他们的每月薪资收入
  8. 联机手写汉字识别,基于新型RNN网络结构的方法
  9. 3.live555源码分析----延时队列
  10. Linux之gdb基本调试命令与总结
  11. 华为交换机 tagged 与 untagged 的关系、H5C 开web管理、telnet管理
  12. rgss3a解包器_Rgss3a解包器下载
  13. java连接twitter登录,android中接入twitter进行第三方登录
  14. 手游App渠道推广统计
  15. 将DVD中的VOB文件无损转换为MP4等常用视频格式的方法
  16. Java总结之基础篇
  17. 地图影像图数量存储大小精度推算
  18. 揭秘!腾讯程序员告诉你当今最热门的5门编程语言
  19. 数据挖掘Task 5: 模型融合
  20. 实现多数据源混合计算的方案之一

热门文章

  1. 值传递和引用传递的讲解
  2. PHP中如何实现 “在页面中一边执行一边输出” 的效果
  3. hdu 4911 求逆序对数+树状数组
  4. 2012年度IT博客大赛10强花落谁家暨圆满落幕
  5. VC++ 删除当前读取行 代码
  6. Web移动应用调试工具——Weinre
  7. Vue.Js添加自定义插件
  8. yum源安装php报错缺少libmcrypt.so.4()(64bit)库
  9. logstash redis kafka传输 haproxy日志
  10. 常用Redis命令总结