快速业务通道

基于J2ME平台下SOAP协议的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
o;Pull”的分析方法。

下面是KXML采用DOM的方式处理XML数据的例子:

1.Document doc = new Document(); 2.... 3.parser = new XmlParser(abc); 4.doc.parse( parser ); 

第一行创建了一个文档对象,保存XML树。第三行从一个名为abc的 InputStreamReader中创建一个KXML语法分析程序。第四行传送这个语法分析程 序到文档,然后让文档开始分析。XML被递归分析,直到到达文档的结尾。当分 析调用退出时,整个文档被装入内存,这时就可以对XML进行操作了。

1.Element root = doc.getRootElement(); 2.int child_count = root.getChildCount(); 3.... 4.for (int i = 0; i < child_count ; i++ ) { 5.... 6. Element kid = root.getElement(i); 7. 8. if (!kid.getName().equals("abc")) { 9. continue; 10. }

<abc>元素是根元素的直接子元素,可以遍历根元素的子元素,寻找abc标 记,如果子元素不是一个abc 标记,则返回。

1.int address_item_count = kid.getChildCount(); 2. 3. for (int j = 0; j < abc_item_count ; j++) { 4....

基于J2ME平台下SOAP协议的应用(3)

时间:2010-12-09 焦丹勋

如果找到了abc子元素,开始遍历它的子元素,并把这些子元素的内容打印出 来。

通过KXML对XML的处理,可以进一步实现对SOAP数据的处理,实现J2ME平台对 SOAP协议的支持。

J2ME Web Services规范(JSR172)的制订给J2ME平台增加两大功能:一是使 其能够远程访问基于SOAP/XML的Web Services;二是使其具有解析XML数据的能 力。目前JSR172的标准已经制定完成,为了实现这两大功能,JSR172新定义了提 供相应功能的两个可选包。这两个包占用内存非常少,XML-RPC部分大概需要25 -30KB的空间,而XML解析器则需要35KB左右。

规范只对JAX-RPC的模型提供支持,也就是说仅支持同步的访问方式,使用 J2ME客户端可以向服务器发送RPC请求和获得RPC响应。在JSR 172中实现的是SAX 模式的解析器。能够解析XML之前首先需要创建SAXParser的实例,

SAXParserFactory factory = SAXParserFactory.newInstance (); SAXParser saxParser = factory.newSAXParser();

接下来要获得XML文件的输入流,并把它作为其中一个参数传递给saxParser 的parse方法,

InputStream is = this.getClass().getResourceAsStream ("phone.xml"); SaxParser.parse(is,new BasicHandler(this));

DefaultHandler是SAX2默认的事件处理器基类,用于处理XML解析事件的方法 如下:

startDocument() startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, Attributes attributes) characters(char[] ch, int start, int length) endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName) endDocument()

默认情况下,DefaultHandler的上述方法什么也不做,因此必须自己扩展 DefaultHandler并且覆盖上述的方法。程序中提供了一个BasicHandler用来处理 xml文件。class BasicHandler extends DefaultHandler在BasicHandler类中有 两个成员变量

private Vector phones = new Vector(); private Stack tagStack = new Stack();

phones用来存储我们已经解析出来的Phone对象,tagStack则用来存放我们解 析到的元素名称,比如sonyericsson,phone,name,colour等。在文档解释结 束后,也就是在endDocument()方法内我们把解析的结果显示在手机屏幕上, BasicHandler的几个重要方法如下:

public void startDocument() throws SAXException {} public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号