快速业务通道

在Java中使用DOM和XPath进行有效的XML处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
惯,却使用拷贝和粘贴方法而不是创建助手(helper) 库呢?我们相信这是由于 DOM 的复杂性加深了学习的难度,并使开发者要理解能完成他们所 需要的第一段代码。开发产生构成助手库规范的函数所需的专门技术需要花费大量的时间。

要节省一些走弯路的时间,这里是一些将使您自己的库可以运转起来的基本助手函数。

findValue

使用 XML 文档时,最常执行的操作是查找给定节点的值。正如上所讨论的,在遍历文档 以查找期望的值和检索节点的值中都出现难度。可以通过使用 XPath 来简化遍历,而值的检 索可以一次编码然后重用。在两个较低级函数的帮助下,我们实现了 getValue 函数,这两 个低级函数是:由 Xalan 包提供的 XPathAPI.selectSingleNode (用来查找和返回与给定 的 XPath 表达式匹配的第一个节点);以及 getTextContents ,它非递归地返回包含在节 点中的连续文本值。请注意,JDOM 的 getText 函数,或将出现在 DOM 级别 3 中规划的 getTextContent 方法,都可用来代替 getTextContents 。 清单 2包含了一个简化的清单; 您可以通过下载样本代码来访问所有函数(请参阅 参考资料)。

通过同时传入要开始搜索的节点和指定要搜索节点的 XPath 语句来调用 findValue 。函 数查找第一个与给定 XPath 匹配的节点,并且抽取其文本值。

setValue

另一项常用的操作是将节点的值设置为希望的值,如 清单 3 所示。该函数获取一个起始 节点和一条 XPath 语句 ― 就象 findValue ― 以及一个用来设置匹配的节点值的字符串。 它查找希望的节点,除去其所有子节点(因此除去包含在其中的任何文本和其它元素),并 将其文本内容设置为传入的(passed-in)字符串。

appendNode

虽然某些程序查找和修改包含在 XML 文档中的值,而另一些则通过添加和除去节点来修 改文档本身的结构。这个助手函数简化了文档节点的添加,如 清单 4所示。

该函数的参数有:要将新节点添加到其下的节点,要添加的新节点名称,以及指定要将节 点添加到其下位置的 XPath 语句(也就是,新节点的父节点应当是哪个)。新节点被添加到 文档的指定位置。

最终分析

DOM 的语言无关性设计为其带来了非常广泛的可应用性并使其在大量的系统和平台上得以 实现。这样做的代价是:使 DOM 比为每个语言专门设计的 API 更困难且更缺乏直观性。

DOM 奠定了一个非常有效的基础,遵循一些简单的原则就可其上构建易于使用的系统。凝 结了一大群用户智慧和经验的 DOM 未来版本正在设计之中,而且极有可能为这里讨论的问题 提供解决方案。如 JDOM 这样的项目正在修改该 API 以获得更自然 Java 感觉,而且如本文 中所述的技术可以帮助您使 XML 的操纵更方便、更简洁并且不易出错。利用这些项目且遵循 这些用法模式以允许 DOM 成为基于 XML 项目的出色平台。

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号