- 浏览: 212203 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
fenglongcen:
java可以写测试脚本吗?
linux 通过脚本执行java程序 -
chensss2008:
我代为回答2楼的问题,呵呵,因为我也遇到了这个问题。使用adm ...
SVNManager使用介绍 -
小诗诗:
我想问一下怎么使用“服务器配置管理员”怎么登陆啊!!!! ...
SVNManager使用介绍 -
sbcqw93:
能创建文件夹吗?比如说:http://127.0.0.1/sv ...
SVNManager使用介绍 -
energykey:
yhjhoo 写道好像没有一个外部的jar包,请教以下如何在l ...
linux 通过脚本执行java程序
J2ME从服务器解析并读取xml文件,其实跟在本地读取xml文件相似,只是我们在下载服务器的xml时,需要注意将xml转码为“UTF-8”,服务器的xml文件跟我上次写的xiaochao.xml文件内容一样,所以这里就不再写了,大家可以去看上一期的博客,代码如下:
package com.mopietek; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.rms.RecordEnumeration; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreException; import javax.microedition.rms.RecordStoreNotOpenException; import org.kxml2.io.KXmlParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; public class KXMLliao extends MIDlet implements CommandListener{ private Display display; private Form form; private List choose = null; private Command exitCommand = new Command("退出",Command.EXIT,1); private Command viewCommand = new Command("浏览",Command.SCREEN,1); private Command delCommand = new Command("删除",Command.SCREEN,2); RecordStore rs = null; public KXmlParser parser = new KXmlParser(); public KXMLliao() { display = Display.getDisplay(this); rs = openRS("XMLRS"); //创建记录存储 } //读取网络上的xml文件 public void loadText() throws XmlPullParserException{ try{ String URL = "http://dev.mopietek.net:8080/waptest03/xiaochao.xml"; HttpConnection httpConnection = (HttpConnection) Connector.open(URL); parser.setInput(new InputStreamReader(httpConnection.openInputStream(),"UTF-8")); }catch(IOException e){ e.printStackTrace(); } } protected void startApp() throws MIDletStateChangeException { try{ Interpret(); }catch(XmlPullParserException xpp){ } display.setCurrent(form); } //解析XML文件 public void Interpret() throws XmlPullParserException{ form = new Form("解析XML"); form.addCommand(exitCommand); form.addCommand(viewCommand); form.setCommandListener(this); String str3; this.loadText(); //调用这个方法来加载网络上的XML文件 int eventType = parser.getEventType(); try{ while(eventType != XmlPullParser.END_DOCUMENT){ //如果当前标签为开始标签,且标签内容为person的话 if(eventType == XmlPullParser.START_TAG && parser.getName().equals("person")){ str3 = parser.getAttributeValue(0); addNewData(str3); //转到下一个标签 eventType = parser.nextTag(); //如果是ID标签 if(parser.getName().equals("name")){ //提取name标签的内容 str3 = parser.nextText(); addNewData(str3); } //转到下一个标签 eventType = parser.nextTag(); //如果是Text标签 if(parser.getName().equals("attack")){ //提取attack标签的内容 str3 = parser.nextText(); addNewData(str3); } } eventType = parser.next(); } }catch(IOException ioe){ ioe.printStackTrace(); } form.append("解析XML文件完毕并且以存到RMS中!"+"\n" +"按浏览键可以浏览全部记录"); } //加入记录到记录存储 //各个记录由字节数组表示,所以加入记录就意味着:把字节数组加入到记录存储 //synchronized代表同步,即同一时刻,保证只有一个线程对RecordStore进行操作 public synchronized void addNewData(String record){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream daos = new DataOutputStream(baos); try{ daos.writeUTF(record); }catch(IOException ioe){ ioe.printStackTrace(); } //把接收到的数据放到bytearr数组中 byte[] bytearr = baos.toByteArray(); try{ //加入记录到记录存储,该方法有三个参数,第一个是要加入的字节数组 //第二个是字节数组内的offset(位移),第三个指要加入的字节数目 rs.addRecord(bytearr, 0, bytearr.length); System.out.println("加入到RMS中的数据:" + baos.toString()); }catch(RecordStoreException rse){ System.out.println(rse); rse.printStackTrace(); } } public void commandAction(Command c, Displayable d) { if(c == exitCommand){ try { destroyApp(false); } catch (MIDletStateChangeException e) { e.printStackTrace(); } notifyDestroyed(); } else if(c == viewCommand){ System.out.println("准备调用相关函数浏览全部记录"); this.listItems(); } else if(c == delCommand){ System.out.println("准备调用相关函数删除全部记录"); try { this.closeRS(); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } } } private RecordStore openRS(String fileName) { try{ //打开fileName记录存储,第二个参数true代表如果记录存储不存在的话就创建新的记录存储 //如果为false值则引发RecordStoreNotFoundException异常 rs = RecordStore.openRecordStore(fileName, true); System.out.println("已创建" + fileName + "记录存储"); }catch(RecordStoreException rse){ rse.printStackTrace(); } return rs; } //遍历记录存储中的记录 public synchronized RecordEnumeration enumerate() throws RecordStoreNotOpenException{ return rs.enumerateRecords(null, null, false); } //列出全部记录信息 public void listItems(){ choose = new List("全部记录",Choice.IMPLICIT); choose.addCommand(delCommand); choose.addCommand(exitCommand); choose.setCommandListener(this); try{ RecordEnumeration re = enumerate(); while(re.hasNextElement()){ String theList = new String(re.nextRecord(),"UTF-8"); choose.append(theList, null); } }catch(Exception e){ e.printStackTrace(); } display.setCurrent(choose); } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { System.out.println("关闭记录存储"); try{ closeRS(); }catch(Exception e){e.printStackTrace();} } protected void pauseApp() { System.out.println("准备关闭记录存储"); display.setCurrent(null); form = null; try{ closeRS(); }catch(Exception e){ e.printStackTrace(); } } //关闭记录存储 public void closeRS() throws RecordStoreNotOpenException,RecordStoreException{ String fileName = rs.getName(); //检测记录存储中的记录总数,如果记录存储时空的则删除这个记录存储 if(rs.getNumRecords() == 0){ rs.closeRecordStore(); rs.deleteRecordStore(fileName); System.out.println("已关闭" + fileName +"记录存储"); }else{ rs.closeRecordStore(); System.out.println("已关闭" + fileName +"记录存储"); } } }
发表评论
-
Lwuit---小细节疑难杂症整理
2010-05-04 17:41 14461、textArea 显示文本内容,在部分手机上无法显示全部内 ... -
Lwuit布局管理
2010-05-04 15:40 1641布局管理器中一个比较特殊的管理器CoordinateLa ... -
J2ME Socket编程
2010-04-25 23:35 4094Socket是套接字,它是基于TCP协议的传输。 在J2ME ... -
Alert用法
2010-04-08 18:21 3884在J2ME中,关于Alert类是用来向用户发出警告信息,一般A ... -
Midlet与Servlet传递Cookie
2010-03-31 11:47 2257Cookie在Java ME平台中没有得到支持,因此要想维持客 ... -
J2ME手机编程中使用字体与游戏键值
2010-03-25 10:02 1410J2me中关于字体Font类的介绍: Font fon ... -
J2me低级UI界面中Canvas类与GameCanvas类
2010-03-23 10:18 3365关于MIDlet类中destroyApp( ... -
J2me语言国际化
2010-03-04 16:39 1597J2me手机开发在早期的WTK没用jsr 238包,所以程序要 ... -
J2ME下载并读取服务器txt文件
2010-03-04 11:56 2057J2ME下载并读取服务器txt文件,我用的公司的服务器,大家如 ... -
J2ME解析并读取xml文件
2010-03-03 17:37 5780用KXML解析读取xml文本 首先需要kxml2-2.3.0. ... -
J2ME手机本地文件上传服务器
2010-02-23 10:20 2726J2ME手机本地存储文件的上传,核心代码如下: pac ... -
读取手机本地图片和文本文件(Lwuit版)
2010-02-22 13:21 2557读取手机存储文件的核心代码: package com.m ... -
J2ME实现从服务器端下载文件(J2me for HttpConnection)
2010-02-07 21:54 2627J2ME实现从服务器端下载文件: 我以下载服务器文件并在手机客 ... -
Lwuit中关于TextField限制输入为数字的内容代码
2010-01-28 10:50 2048Lwuit中关于TextField限制输入为数字的内容代码 ... -
Lwuit 钟表ClockWidget小应用程序
2010-01-26 12:59 1619J2ME关于Lwuit应用的钟表ClockWidget程序 ... -
Lwuit实现九宫图特效程序
2010-01-25 12:16 2206最近在网上看到很多九宫图的程序说明,但大多数是转载的,一些知识 ... -
J2ME中关于Lwuit的标签的综合使用
2010-01-22 18:02 2479J2ME中关于Lwuit的标签的综合使用 由于我使用的主题对 ... -
Lwuit中关于TextArea、TabbedPane组件的使用说明
2010-01-21 16:15 2185TextArea组件的使用说明代码如下: package ... -
Lwuit中CheckBox、ComboBox组件的使用说明
2010-01-21 15:53 2410这几天刚刚开始接触LWUIT,前两天从网上搜到一兄台的博客写的 ... -
J2ME配置Lwuit
2010-01-20 11:34 2172使用Eclipse加入Lwuit jar包配置方法 1.先 ...
相关推荐
学习和理解这个微型解析器的实现,开发者可以了解如何在资源受限的环境中高效地处理XML,这对于开发J2ME应用尤其是需要与服务器交换XML数据的应用至关重要。同时,这也是一种深入理解XML解析原理和Java编程技巧的好...
通过这些资源,开发者可以学习如何在J2ME环境中读取、解析XML数据,并理解如何处理XML事件,创建XML解析器,以及如何将解析后的数据应用于实际应用。这对于开发需要与服务器交换XML数据的J2ME应用程序,如游戏、信息...
3. **XML文档流式处理**:SAX解析器按需读取XML文档,允许J2ME应用处理大型XML文件,而不会消耗大量内存。 4. **错误处理**:SAX解析器还会触发错误事件,允许开发者捕获并处理XML解析中的错误。 5. **实际应用**...
它提供了一个事件驱动的解析模型,允许程序逐个读取XML文档的元素,而无需一次性加载整个文档到内存中,这大大节省了资源。 实现J2ME中的WAP 1.0解析过程可以分为以下步骤: 1. **导入XMLPull库**: 首先,你需要将...
标题与描述中的“j2me wml 解析”是指在Java 2 Micro Edition(J2ME)平台上对Wireless Markup Language(WML)的解析处理。J2ME是Sun Microsystems为资源有限的设备如手机、PDA等设计的Java平台版本,而WML是一种...
服务器解析XML文档,执行相应的方法,并返回同样格式的XML响应。这种简单而通用的机制使得XML-RPC能够在多种语言和平台上实现互操作。 3. **J2ME实现XML-RPC的步骤** - **建立连接**:J2ME程序首先需要创建一个...
在Java 2 Micro Edition (J2ME) 平台上,HTTP通信是开发移动应用程序时一个常见且重要的功能,尤其在需要从服务器获取数据或者发送数据到服务器的应用中。本示例是一个关于J2ME实现HTTP通信的演示项目,旨在帮助...
`获取服务器响应,并读取内容。可能需要解析HTTP响应头以获取状态码,确认请求是否成功。 5. **处理ASP页面**:ASP页面接收到请求后,根据请求的内容执行相应的数据库操作,如SQL查询或更新。这通常涉及到ADO.NET或...
为了在这些设备上实现Web服务功能,Java Community Process (JCP) 定义了Java规范请求 172 (JSR 172),即Web服务API(WSA),它为J2ME提供了一套API,用于远程服务调用和XML解析。 **一、Web服务API的基础** JSR ...
3. **XML解析**:由于RSS订阅源是XML格式,所以需要使用J2ME的XML解析器,如KXML或TinyXML,来解析RSS feed并提取相关信息。解析过程包括解析XML文档结构、定位元素和提取属性值。 4. **UI设计**:J2ME的用户界面...
3. **接收响应**:从服务器读取响应,通常包含WML或XHTML-MP内容。 4. **解析页面**:使用XML解析器(如KXML库)解析接收到的数据。WML是一种基于XML的语言,而XHTML-MP是XHTML的简化版本,适用于移动设备。 5. **...
2. Servlet通过`request.getInputStream()`读取请求体数据,解析出参数。 3. 调用`checkData()`方法,检查参数是否为空。 4. 如果参数非空,使用JDBC连接MySQL数据库,执行查询操作。 5. 处理查询结果,可能包括遍历...
这些数据可能包括JSON、XML或者自定义格式,都需要进行解析和解码。 2. **数据加密**:为了保护用户的隐私和信息安全,手机QQ的通信数据通常会进行加密。J2ME提供了一些基础的加密库,如`javax.crypto`包,包含加密...
总之,"j2me-ws.rar" 文件是一个与 J2ME 平台上实现 Web 服务功能相关的资源包,包含了可能的库、示例代码、工具以及帮助文档,旨在支持开发者在小型设备上构建能够与服务器进行交互的应用程序。
1. **XML解析**:由于RSS数据是XML格式,所以需要一个XML解析器来读取和理解数据结构。J2ME提供了一个轻量级的XML解析库,叫做KXML,适用于资源有限的设备。 2. **网络通信**:使用J2ME的`javax.microedition.io....
在登录时,程序会从RMS中读取这些信息,如果存在则自动填充到登录字段。 2. **用户界面(UI)设计**:J2ME的UI构建通常使用MIDP (Mobile Information Device Profile) 提供的Canvas或Form组件。对于自动登录,需要...
查询算法需要根据输入的出发地、目的地和时间等条件,从服务器获取并展示符合条件的航班信息。预订过程则涉及验证用户信息、确认座位可用性、生成订单等步骤,这些都需要在服务器端完成,而J2ME客户端主要负责显示...
如果是XML数据,可以使用`javax.xml.parsers`包中的SAX或DOM解析器。 在解析完天气数据后,J2ME程序需要将这些信息以友好的方式展示在移动设备的屏幕上。这涉及到用户界面的设计,J2ME提供了Midlet类作为应用程序的...
在Java 2 Micro Edition (J2ME) 中,网络连接是通过特定的API来实现的,这使得...这个过程包括设置请求方法、发送SOAP消息、接收并解析响应。了解这些知识对于开发J2ME应用,尤其是那些需要网络功能的应用至关重要。