快速业务通道

通过Java编程处理XML服务定义 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
际上使用了这一服务。更新后的数据被发送回服务器以完成事务。当然,服务提供商必须验证传入的数据并提供所需的带宽更改。

本文描述的这种模式首先将一个XML文件通过网络传输到客户机。客户机将文件数据作为流进行接收,然后将其解析为一个内存驻留对象。客户机随后对内存驻留对象进行更改,然后反向执行传输过程,将对象发回到服务器。

还存在一种服务,其中 XML数据被完整无缺地从服务器传输到客户机。这种场景中,客户机使用某种形式的文件传输协议(例如 FTP)获得完整的文件副本。由于文件传输是一种标准技术,这里不作过多介绍,您只需了解客户机将下载 清单1 中服务配置数据的一个文件副本。此时,客户机需要解析并修改文件,然后传输回服务器,这种模式的工作原理是什么?

一种基于XML文件的Java 机制

客户机现在将服务配置文件的副本保存在磁盘中。必须对该文件进行解析以提取 XML数据。让人意外的是,这实现起来有些难度,对于较大的文件尤其如此。解决问题的关键是使用合适的解析工具。本文中使用的工具是 dom4j,该工具允许您将 XML数据解析为一个Java对象。您还可以使用一个基于Simple API for XML (SAX)的解析器,但是 SAX 是一种较低级的技术。您将看到,dom4j 工具仅需要很少的工作即可完成解析。清单6 引用自本文附带的ProcessEventXml.java文件,展示了使用dom4j解析文件所需的主要元素。

清单6. dom4j处理XML数据

try {handler.treeWalk(handler.parse(new File(argv[0])));}catch (Throwable t){t.printStackTrace();}}  public Document parse(File url) throws DocumentException{SAXReader reader = new SAXReader();Document document = reader.read(url);return document;}  public void treeWalk(Document document) throws Exception{treeWalk(document.getRootElement());}

基本上只需要两种方法:parse() 和 treeWalk()。当我运行经过编译的类时,我获得了如 清单7 所示的输出。如果您希望亲自运行代码,请确保下载、安装 dom4j 副本,并添加到 CLASSPATH 中(最后一步就是将相应的JAR文件添加到您的CLASSPATH 变量中)。然后,编译 ProcessEventXml.java文件并使用以下命令运行程序:

java ProcessEventXml ServiceDefinition.xml

清单7. 使用dom4j处理XML文件

java ProcessEventXml ServiceDefinition.xml Josephine Bloggs Internet 1mbps 1Gbyte 95

正如您看到的,仅需少量工作即可整洁地显示 XML数据。这些工作都是由 dom4j处理的。事实上,大部分工作是通过treeWalk() 方法完成的,这是一种只有到达文件末尾才进行调用的递归式方法。这里向您展示了dom4j的一个功能:在内存中进行处理。需要注意的是,该技术不适合用于特别大型的XML文件,特别是如果您的Java 设备非常小的话。然而,在本文的例子中,XML数据集非常小,因此使用这个功能不会产生问题。

您的基于文件的客户机现在已经成功访问了XML数据。客户机可以根据需要修改数据并编写新的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号