12.2 使用JDOM访问XML文档的实例
由于JDOM和dom4j的设计目的极为相似,因此JDOM访问XML文档的方式与dom4j非常相似,只不过dom4j面向接口编程,而JDOM则面向实现类编程。
12.2.1 验证XML文档的有效性
JDOM既可以使用DTD,也可以使用Schema来验证XML文档的有效性。
如果程序员只需要使用DTD验证XML文档,则只需调用SAXBuilder的如下方法即可:
setValidation(boolean validation):启用DTD验证XML文档的有效性。该方法仅对DTD语义约束有效,对XML Schema语义约束没有任何作用。
提示
实际上完全可以在创建SAXBuilder时使用如下构造器:new SAXBuilder (true);通过该构造器所创建出来的SAXBuilder默认就已经打开了DTD验证功能。
JDOM完全支持使用XML Schema来验证XML文档的有效性,JDOM的SAXBuilder解析器提供了如下方法来启用验证:
如果XML文档中没有引入对应的XML Schema,则还需要告诉SAXBuilder应使用哪个Schema来验证XML文档的有效性,为此需要设置如下代码:
下面的程序示范了如何使用JDOM来验证XML文档的有效性:
程序清单:codes\12\12.3\src\lee\JdomValidate.java
上面的程序其实与dom4j中验证XML文档有效性的代码非常相似,就连①号代码的作用也完全相似:它设置了验证XML文档所使用的Schema,如果要验证的XML文档中已经引入了Schema语义约束,则这段代码完全可以省略。
如果上面的程序验证的XML文档不是有效文档,将可看到图12.2所示结果。
图12.2 使用JDOM验证XML文档的有效性
12.2.2 使用JDOM解析XML文档
与dom4j解析XML文档的方式完全相似,JDOM也提供了非常简单易用的API来解析XML文档。与dom4j不同的是,JDOM采用面向实现类的方式来解析XML文档。下面是使用JDOM来解析XML文档的代码:
程序清单:codes\12\12.3\src\lee\JdomRead.java
读者可以拿上面的程序和前一章中使用dom4j的解析程序进行对比,不难发现使用dom4j解析XML文档和使用JDOM解析的方式和步骤基本相似。就编程的区别来看,仅仅是JDOM和dom4j所提供的方法名存在差异而已。
使用上面的程序来解析如下XML文档:
程序清单:codes\12\12.3\book.xml
解析结果如图12.3所示。
图12.3 使用JDOM解析XML文档