快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

<?xml version="1.0" encoding="UTF-8"?> <java version="1.5.0_06" class="java.beans.XMLDecoder"> <string>Josephine Bloggs</string> <string>Internet</string> <string>1mbps</string> <string>Gbyte</string> <string>295</string> </java>

通过Java编程处理XML服务定义(2)

时间:2010-05-13 IBM Stephen Morris

您可以通过网络将 清单3 中的文件传输给等待状态中的客户机 — 使用Java技术即可创建。清单4展示了一个简单的例子。

清单4. 跨越网络传输文件

byte[] bytes = new byte[BUFFER_SIZE]; FileInputStream inputFile = null; try { File file = new File("xmldata.xml"); if (file.exists()) { inputFile = new FileInputStream(file); int ch = inputFile.read(bytes, 0, BUFFER_SIZE); while (ch != -1) { output.write(bytes, 0, ch); ch = inputFile.read(bytes, 0, BUFFER_SIZE); } }

清单4 中的代码创建了一个长度缓冲区 BUFFER_SIZE。 BUFFER_SIZE 常量的值可以是 1024 或更高。通过调用inputFile.read() 方法将输入文件(xmldata.xml)的内容读取到缓冲区中。进行缓冲之后,output.write() 方法将文件数据写入到 OutputStream对象的套接字中。最后一步将数据通过网络发送到等待中的客户机中。这些功能居然只需要这么少的代码!

接下来,您需要使客户机处理传入的XML数据。

接收数据的Java客户机获得 XML内容(并不是 XML文件)

客户机如何接收 XML数据?同样,对于Java技术来说这只是小事一桩。数据接收通过一个套接字对象完成。清单5展示的代码将接收传入的数据并将数据推入到 ArrayList类的对象中。

客户机现在必须解决两个与所接收数据项的数量有关的问题。由于这是一个松散耦合的场景,您必须假定客户机并不清楚服务配置文件(即 清单1 中的代码)中包含了多少 XML数据项。因此,您必须确定一些方法来接收和处理精确的数据项数量。第二个问题比较容易解决,就是如何保存处理过的数据。您将看到,清单5 同时解决了这两个问题。

清单5. 提取嵌入的XML数据

XMLDecoder d = new XMLDecoder(input); try { while (true) ArrayList<Object[]> rowList = new ArrayList<Object[]>(); { String dataItem = (String)d.readObject(); System.out.println("XML decoded data: " + dataItem); rowList.add(dataItem); } } } catch (Exception exc) { if (exc instanceof ArrayIndexOutOfBoundsException) { // No more records to process System.out.println("Parsed all XML records - " + "threw exception. Number of rows: " + rowList.size()); } } d.close();

通过Java编程处理XML服务定义(3)

时间:2010-05-13 IBM Stephen Morris

通过一个有限循环while (true),您可以确定期望的到来数据项的数量。该代码将一直执行循环,直到接收到最后一个数据项,此时将抛出一个异常(ArrayIndexOutOfBoundsException)。您必须使用这种异常机制,除非客户机已经了解期望的数据项数量。

从InputStream对象接收的XML数据被保存在ArrayList类的一个对象中。该类对于此类应用程序非常有用。完成类定义之后,ArrayList 具有一个特定的容量,总是匹配底层列表的大小。 在添加元素时,ArrayList对象的容量将自动扩展。因此,您无需担心会超过数组的极限,因为该类将为您处理这一问题。

此时,客户机具有 清单1 中数据的副本。客户机现在可以将带宽元素修改为所需的值,然后反向执行文件传输过程,从客户机发送到服务器。通过将 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号