`
wangxc
  • 浏览: 209692 次
  • 性别: 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文件放在了解析类的包的根目录下,路径应该没问题啊,不知道是什么原因,需要额外进行什么配置吗

相关推荐

    JAVA上百实例源码以及开源项目

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java源码包---java 源码 大量 实例

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java源码包2

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...

    java源码包3

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...

    java源码包4

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    JAVA上百实例源码以及开源项目源代码

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    java面试题

    1:读取并解析映射信息,创建SessionFactory 2:打开Session 3:创建事物 4:持久化操作 5:提交事务 6:关闭Session 7:关闭SessionFactory Hibernate持久化:Hibernate根据定义的映射规则将对象持久化保存...

    Google Android SDK开发范例大全(第3版) 1/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 4/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 3/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 5/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

Global site tag (gtag.js) - Google Analytics