您现在的位置: 论文网 >> 计算机论文 >> 计算机应用论文 >> 基于J2ME平台的SOAP协议研究与应用论文

基于J2ME平台的SOAP协议研究与应用

作者:未知
出处:论文网
时间:2007-05-14

Enhydra的KXML是一个只占很小存储空间的XML语法分析程序,对于J2ME应用程序非常适合。KXML支持DOM语法分析和操作,但是不支持SAX语法分析。取而代之,它使用一种稍微不同的称为“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.... 

如果找到了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.println("the qName is "+qName);

if(qName.equals("phone")) {

Phone phone = new Phone();

phones.addElement(phone);

}

tagStack.push(qName);

System.out.println("the tag stack's length is "+tagStack.size());

}

public void endElement(String uri, String localName, String qName) throws SAXException {

System.out.println("the end qName is "+qName);

tagStack.pop();

}

5 结束语

通过扩充J2ME平台对XML数据的处理,完成了J2ME平台对SOAP协议的支持。通过SOAP协议能够使得基于J2ME平台的嵌入式设备无缝的连接到企业现有的应用系统,解决了嵌入式设备数据来源不足的问题,扩展了嵌入式系统的应用范围。本文从处理XML数据出发,深入探讨了在J2ME平台中实现SOAP客户端的各种技术,对于企业应用系统的集成具有一定的推广价值。

参考文献

[1] Yuan,Michael Juntao. Enterprise J2ME. Pearson Education 2003

[2] 胡虚怀,杨志,李焕. J2ME移动设备程序设计. 清华大学出版社 2005

[3] 施铮. J2ME技术参考手册. 电子工业出版社 2004

[4] 杨涛. SOAP:XML跨平台Web Service开发技术. 机械工业出版社 2002

上一页 [1] [2]

论文搜索
关键字:J2ME SOAP 协议研究 XML嵌入式系统 电子计算机
最新计算机应用论文
基于网络信息安全技术管理的计算机应用研究
浅析人工智能体系建设
抖音短视频平台视频推荐模式研究
应用电子技术中可编程控制器的应用探讨
用友NC信息系统的实施应用实践研究
基于校园一卡通数据系统的学生行为分析研究
云环境下基于蚁群算法的动态容错技术研究
自拍图像中的记忆痕迹
抖音短视频用户使用动机研究
基于创新扩散理论的Vlog传播
热门计算机应用论文
学生成绩管理系统的设计与实现
浅析计算机病毒及防范的措施
学籍管理系统软件
对计算科学与计算机发展的思考
计算机应用型人才的培养模式研究
物资管理信息系统开发
计算机信息管理在第三方物流中的应用
嵌入式系统数字图像采集接口电路设计
基于B/S体系结构开发应用系统
项目管理在软件中的应用