JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。
JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。
JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学习曲线假定为20%)。JDOM对于大多数Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。
下面给出例子简单的介绍下jdom方式解析xml文件的方法:
xml文件:first.xml,放于src目录下
JDOM jar包下载: http://blog.csdn.net/frightingforambition/article/details/22209747
<?xml version="1.0" encoding="UTF-8"?> <xml-body> <value> <no> 鲁B1234 </no> <addr> 山东省青岛市 </addr> </value> <value> <no> 鲁A1234 </no> <addr> 山东省济南市 </addr> </value> </xml-body>
package Test; import java.io.File; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; public class MyXmlReader_jdom { public static void main(String arge[]) { long lasting = System.currentTimeMillis(); try { //创建一个SAXBudilder对象 SAXBuilder builder = new SAXBuilder(); //读取first.xml资源 Document doc = builder.build(new File("src/first.xml")); //获取根元素 Element foo = doc.getRootElement(); //获取根元素下面所有的子元素 List<Element> allChildren = foo.getChildren("value"); for(int i=0;i<allChildren.size();i++) { System.out.print("车牌号码:" + (allChildren.get(i)).getChild("no").getText()); System.out.println("车主地址:" + (allChildren.get(i)).getChild("addr").getText()); } } catch (Exception e) { e.printStackTrace(); } System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒"); } }
运行结果: