XML 的中阶知识巩固之 XML Schema 其一

用过 XML 的人都知道可用 DTD(Document Type Definition) 来验证语法,不过微软主导了新一代验证语法的 XML Schema,并且风头正劲,大有一统江湖之势。看看我们身边的几个变化就明白了。

web.xml 从 web-app_2_3.dtd 到 web-app_2_4.xsd
spring 配置文件从 spring-beans.dtd 到 spring-beans-2.0.dtd 到 spring-beans-2.0.xsd,直至灵活的自定义 Schema
quartz_jobs.xml 配置文件从 job_scheduling_data_1_5.dtd 到 job_scheduling_data_1_5.xsd

XML Schema 简介

XML Schema 是一个比 DTD 具有更细致描述语法功能的验证技术,并且它本身也是一个 XML 文件,不像 DTD 用是是独有的语法。既然 XML Schema 和 DTD 都是用来验证 XML 的,并能大抢风头,固然有它值得称道的地方。所以先说说 DTD 的的不足和 XML Schema 的特点。 阅读全文 >>

JDOM 使用 XPath 查找带 NameSpace 的节点

对于 XML 文件中不带命名空间(NameSpace) 的节点,如

<blog_Content>

用 JDOM 的 XPath 来搜索这个节点时可用下面之中任一代码:

①   List<Element> elements = XPath.selectNodes(document,"//blog_Content");

②   XPath xpath = XPath.newInstance("//blog_Content");
       List<Element> elements = xpath.selectNodes(document);

但是如果是查找带命名空间的节点,如 阅读全文 >>

XML 的中阶知识巩固之命名空间


1. 命名空间 (Namespace) 的引入

比如有两份 XML 数据

集成在一起时就是 阅读全文 >>

利用JDOM把两个XML合并生得到一个Document对象

通常一些应用框架都会用 XML 作为配置,而且很多都支持多个 XML 文件,例如 Struts 框架可以配置多个 struts-config-xxx.xml 文件,Spring 也允许你用多个 applicationContext-xxx.xml 文件,再比如 DWR 也是可以由多个 dwr-xxx.xml 依功能或其他方式分开来配置。我们知道,这样的多个 XML 有相同的规范定义,那么程序如何一并解析它们呢?我看过 ActionServlet 是对 struts-config-xxx.xml 逐个解析的。我这里介绍的一种方法是把那些有着相同规范定义的 XML 合成一个 Document 然后对这个 Document 对象进行处理,如 XPath 查找、进行 DOM 对象操作,就不需要每次到多个 Document 中去查找一遍。

众所周知,对 XML 的操作有两种方式,DOM:XML 映射在内存中一颗树;SAX:基于事件的方式。常用的 XML Java 解析组件有 DOM4J(Apache的)、JDOM、和JAXP(Sun的),它们都提供了 DOM 和 SAX 实现和 Xpath 查找。 阅读全文 >>