`
wangxc
  • 浏览: 213030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2ME解析并读取xml文件

    博客分类:
  • J2ME
阅读更多
用KXML解析读取xml文本
首先需要kxml2-2.3.0.jar,可以在我的附件中下载,源代码如下:




import java.io.IOException;

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.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;


public class KXML_ZHMidlet extends MIDlet implements CommandListener{

	private Display display;
	private Form form;
	
	public final static Command exitCommand = new Command("Exit",Command.EXIT,1);
	
	public KXML_ZHMidlet(){
		display = Display.getDisplay(this);
		form = new Form("中文读取本地xml文件");
		form.addCommand(exitCommand);
		form.setCommandListener(this);
	}
	
	
	
	protected void destroyApp(boolean unconditional)
			throws MIDletStateChangeException {
		
	}

	protected void pauseApp() {
		
	}

	protected void startApp() throws MIDletStateChangeException {
		try {
			readXML();
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		}
		display.setCurrent(form);
	}

	public void commandAction(Command c, Displayable d) {
		
	}

	
	public void readXML() throws XmlPullParserException{
		
		KXmlParser parser = new KXmlParser();
//		parser.setInput(this.getClass().getResourceAsStream("/a.xml"),null);
		parser.setInput(this.getClass().getResourceAsStream("/xiaochao.xml"),null);
		int eventType = parser.getEventType();
		
		try{
			
			while(eventType != XmlPullParser.END_DOCUMENT){
				//当标签为开始标签并且标签内容为xiaochao时
				if(eventType == XmlPullParser.START_TAG && parser.getName().equals("person")){
					//读取第一个属性,
					form.append("魔兽游戏: " + parser.getAttributeValue(0) +"\n");
					//读取下一个标签
					eventType = parser.nextTag();
					if(parser.getName().equals("name")){
						//提取name标签的内容
						form.append("英雄: " +parser.nextText()+"\n");
					}
					//读取下一个标签
					eventType = parser.nextTag();
					if(parser.getName().equals("attack")){
						//提取name标签的内容
						form.append("专属装备: " +parser.nextText()+"\n");
					}
					
					form.append("\n");
				}
				
				eventType = parser.next();
			}
			
				
			
			
			 
			
				
				
				
				
				
		}catch(IOException e){
			e.printStackTrace();
		}
		
		form.append("读取文件完毕!");
		
		
	}
	
	
}




xiaochao.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>
<xiaochao>
  <person version='Dota'>
  	<name>雷电男</name>
  	<attack>雷神装备</attack>
  </person>
  <person version='真三'>
  	<name>马岱</name>
  	<attack>月下美装备</attack>
  </person>
</xiaochao>



  • 大小: 5.4 KB
分享到:
评论
14 楼 wuhanchendalong 2011-08-14  
楼主我的报错:
java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
at com.sun.midp.midlet.MIDletState.createMIDlet(+29)
at com.sun.midp.midlet.Scheduler.schedule(+52)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+80)

我按照你的做的!
13 楼 zhang247124629 2010-10-27  
我加载了。。加载别人的JAR就没有问题的。。。
12 楼 wangxc 2010-10-26  
回复11楼,从你的报错上看似乎你没加载kxml.jar或者你没有加载正确这个jar包,请你检测一下你的程序。
11 楼 zhang247124629 2010-10-26  
java.lang.Error: Unresolved compilation problems:
The import org.kxml2 cannot be resolved
The import org.xmlpull cannot be resolved
The import org.xmlpull cannot be resolved
The method readXML() from the type KXML_ZHMidlet refers to the missing type XmlPullParserException
XmlPullParserException cannot be resolved to a type
XmlPullParserException cannot be resolved to a type
KXmlParser cannot be resolved to a type
KXmlParser cannot be resolved to a type
XmlPullParser cannot be resolved
XmlPullParser cannot be resolved

at KXML_ZHMidlet.<init>(+9)
at java.lang.Class.runCustomCode(+0)
at com.sun.midp.midlet.MIDletState.createMIDlet(+34)
at com.sun.midp.midlet.Scheduler.schedule(+52)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+80)
帮看一下这是什么情况.谢谢了.
10 楼 xiaobai1898 2010-04-28  
问题解决了,特来膜拜大牛!
9 楼 xiaobai1898 2010-04-28  
谢谢了!你真是太好了呵呵。我的确用的是eclipseMe插件。我用邮箱发到你wxc11wxc@163.com里了,这个问题困扰我好多天了
8 楼 wangxc 2010-04-28  
你把你的程序发我邮箱吧,我在这边给你看一下吧,我邮箱地址是wxc11wxc@163.com,你也可以发到我博客邮箱上,顺便说一下你刚刚提到的问题,我想你的eclipse工具应该是加入了eclipseMe插件,我加入的是mtj的插件,所以咱们说的工程下的目录结构有些不同。
7 楼 xiaobai1898 2010-04-27  
刚打错了,我在buildpath里指定的是default output folder为res,呵呵
6 楼 xiaobai1898 2010-04-27  
我的确是建的j2me项目。我又修改了下,把xml放进res文档里,在buildpath里指定default output folder为src。你说的Application Descriptor应该就是我这里项目名.jad那个文件吧,build.properties 这个文件我没找到,这个很重要吗?我现在报的错误是java.io.UTFDataFormatException,谢谢!
5 楼 wangxc 2010-04-27  
兄弟,我用也是eclipse开发工具,WTK是SUN公司提供的J2ME开发包,它里面有模拟器,你在eclipse新建一个J2ME项目时,应该包含src、res文件夹 还有Application Descriptor、build.properties 文件, 不知道你是不是建的不是J2ME工程呀,你看一下,你建的工程是不是和我说的一样呀!谢谢!
4 楼 xiaobai1898 2010-04-27  
我是用eclipse编写的,项目文件夹是Test文件夹,下面有src文件放的是你这里的源码,xml文档放在Test文件夹下,和src是一个目录的。我也添加了外部jar包。你是用wtk编译的吗?那样的话jar文件应该怎样加载呢?谢谢!
3 楼 wangxc 2010-04-27  
不好意思写错了,是xiaochao.xml文件
2 楼 wangxc 2010-04-27  
你的报错是非法参数异常,首先你要检查一下你是否正确加载了kxml2-2.3.0.jar,我不太明白你说的“我是把XML文件放在了解析类的包的根目录下”这句话的意思,如果你用我写的代码,请你把test.xml放入res文件夹下再试试!如果有什么问题再联系。
1 楼 xiaobai1898 2010-04-27  
朋友你好,最近我也在学习kxml。我用你的实例测试了一下,抛出了new IllegalArgumentException(),应该是读取XML文件出问题了。我是把XML文件放在了解析类的包的根目录下,路径应该没问题啊,不知道是什么原因,需要额外进行什么配置吗

相关推荐

    kuixdemo-1.0.0(J2ME下解析xml文件)

    通过这些资源,开发者可以学习如何在J2ME环境中读取、解析XML数据,并理解如何处理XML事件,创建XML解析器,以及如何将解析后的数据应用于实际应用。这对于开发需要与服务器交换XML数据的J2ME应用程序,如游戏、信息...

    xml.rar_j2me_j2me xml_java xml_xml j2me

    同时,"并附应用"表明这个压缩包中可能包含一个演示程序,用于展示如何使用这个微型解析器来解析和操作XML数据。 标签"j2me j2me_xml java_xml xml_j2me"进一步强调了这是关于J2ME平台处理XML的话题。"java_xml...

    Jaxp_xml.rar_J2ME 程序_j2me_j2me xml_j2me 网络

    3. **XML文档流式处理**:SAX解析器按需读取XML文档,允许J2ME应用处理大型XML文件,而不会消耗大量内存。 4. **错误处理**:SAX解析器还会触发错误事件,允许开发者捕获并处理XML解析中的错误。 5. **实际应用**...

    XML.rar_J2me online game

    开发者需要编写代码来读取XML文件,解析其结构,并将数据转换为游戏内可使用的对象。 **4. 创建游戏架构** 一个简单的J2ME在线游戏通常包括以下几个部分: - 游戏状态管理:定义游戏的不同状态(如菜单、游戏进行...

    J2me浏览器(kxml解释实现)

    它提供了解析XML文档的能力,包括读取元素、属性、文本等,并且不需要DOM或SAX支持,这使得它在J2ME平台上具有较高的效率。 3. **XML解析**:在J2ME浏览器中,XML解析是关键部分,因为许多网页内容是以XML格式或者...

    j2me wml 解析

    标题与描述中的“j2me wml 解析”是指在Java 2 Micro Edition(J2ME)平台上对Wireless Markup Language(WML)的解析处理。J2ME是Sun Microsystems为资源有限的设备如手机、PDA等设计的Java平台版本,而WML是一种...

    J2me 实现 wap 1.0 的解析

    它提供了一个事件驱动的解析模型,允许程序逐个读取XML文档的元素,而无需一次性加载整个文档到内存中,这大大节省了资源。 实现J2ME中的WAP 1.0解析过程可以分为以下步骤: 1. **导入XMLPull库**: 首先,你需要将...

    j2me-xmlrpc.rar

    服务器解析XML文档,执行相应的方法,并返回同样格式的XML响应。这种简单而通用的机制使得XML-RPC能够在多种语言和平台上实现互操作。 3. **J2ME实现XML-RPC的步骤** - **建立连接**:J2ME程序首先需要创建一个...

    j2me jar包,j2me插件eclipseme.feature1.7.9site

    KXML是轻量级的XML解析器,适用于资源有限的J2ME环境,它允许程序处理XML文档,进行数据交换或配置读取等任务。 2. **LWUIT**: Lightweight UI Toolkit,这是一个轻量级的用户界面框架,专为J2ME设计。LWUIT提供了...

    J2ME平台的RSSReader

    总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...

    解析用于J2ME开发平台的Web服务API 解析用于J2ME开发平台的Web服务API

    为了在这些设备上实现Web服务功能,Java Community Process (JCP) 定义了Java规范请求 172 (JSR 172),即Web服务API(WSA),它为J2ME提供了一套API,用于远程服务调用和XML解析。 **一、Web服务API的基础** JSR ...

    J2ME 中文教程 MIDP2.0

    - **XML解析器**:内置XML解析器,便于处理XML数据。 - **Java虚拟机优化**:提升了性能,减少了内存占用。 **3. 开发工具与环境** 开发J2ME应用通常需要使用Java IDE,如Eclipse或NetBeans,它们都提供了J2ME项目...

    基于CLDC架构的XML的解析

    本文旨在探讨如何在CLDC架构下实现XML的有效解析,并介绍了一种适用于移动设备的kXML解析器。 #### CLDC架构下的XML解析挑战 CLDC架构是Java ME(Micro Edition)的一部分,专为资源受限的设备设计,如早期的智能...

    j2me http通信demo

    `openInputStream()`方法打开与服务器的连接并返回输入流,你可以从中读取响应数据。 对于POST请求,你需要设置请求头和正文内容: ```java httpConn.setRequestMethod(HttpConnection.POST); OutputStream os = ...

    j2me游戏demo

    2. **XMLReader应用**:游戏的角色属性用XML进行标记,这是因为XML是一种结构化数据表示方式,易于读写和解析。XMLReader是Java API中的类,用于读取XML文档。通过XMLReader,游戏可以动态加载角色属性,增强了游戏...

    JAVA解析配置文件

    1. **文件读取**:使用`java.io`包中的`BufferedReader`或`Scanner`类来打开并读取配置文件的内容。例如: ```java InputStreamReader reader = new InputStreamReader(new FileInputStream("Assets.ini"), "UTF-8")...

    用J2ME与ASP建立数据库连接.rar_http in j2me_j2me_j2me 3d_j2me asp

    `获取服务器响应,并读取内容。可能需要解析HTTP响应头以获取状态码,确认请求是否成功。 5. **处理ASP页面**:ASP页面接收到请求后,根据请求的内容执行相应的数据库操作,如SQL查询或更新。这通常涉及到ADO.NET或...

    J2ME+servlet+mysql查询数据

    2. Servlet通过`request.getInputStream()`读取请求体数据,解析出参数。 3. 调用`checkData()`方法,检查参数是否为空。 4. 如果参数非空,使用JDBC连接MySQL数据库,执行查询操作。 5. 处理查询结果,可能包括遍历...

    基于j2me的手机rss阅读器

    3. **XML解析**:由于RSS订阅源是XML格式,所以需要使用J2ME的XML解析器,如KXML或TinyXML,来解析RSS feed并提取相关信息。解析过程包括解析XML文档结构、定位元素和提取属性值。 4. **UI设计**:J2ME的用户界面...

Global site tag (gtag.js) - Google Analytics