⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlreaderpractice.java

📁 j2me游戏引擎 j2me游戏引擎
💻 JAVA
字号:
package cn.org.matrix.gmatrix.practice.demo01;

import org.kobjects.xml.*;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * kObjects的XmlReader类的测试
 * @author cleverpig
 *
 */
public class XmlReaderPractice {
	private XmlReader xmlReader=null;
	
	private String msgName="msg";
	private String[] msgAttributes={"id","content"};
	
	private String msgQueueName="msgQueue";
	private String[] msgQueueAttributes={"id","msgs"};
	
	private String eventName="event";
	private String[] eventAttributes={"id","invoker",
			"responser","type","parameter"};
	
	private String eventQueueName="eventQueue";
	private String[] eventQueueAttributes={"id","events"};
	
	private String propertyName="property";
	private String[] propertyAttributes={"id","name",
			"description","buyPrice","salePrice",
			"lifeEffect","attackEffect","defenceEffect",
			"useTimes","type"};
	
	private String propBoxName="propertyBox";
	private String[] propBoxAttributes={"id","props"};
	
	private String npcName="npc";
	private String[] npcAttributes={"id","name","life",
							"attack","defence",
							"imgURL","faceURL",
							 "col","row",
							 "speed","direction",
							 "eventQueue","properties",
							 "type",
							 "animationLoopTime",
							 "animationFrameWidth",
							 "animationFrameHeight"};
	
	private String actorName="actor";
	private String[] actorAttributes={"name","life","attack",
							"defence","imgURL","faceURL",
							"col","row","speed","direction",
							"properties",
							"animationLoopTime",
							"animationFrameWidth",
							"animationFrameHeight"};
	
	private String musicName="music";
	private String[] musicAttributes={"id","resURL","musicType",
			"playModel","loopNumber"};
	
	private String cameraName="camera";
	private String[] cameraAttributes={"id","x","y",
			"width","height","moveType","customSize"};
	
	private String layerName="layer";
	private String[] layerAttributes={"id","tileWidth","tileHeight",
			"tileCols","tileRows","type","imgURL","mapData"};
	
	private String transformerName="transformer";
	private String[] transformerAttributes={"id","nextMap",
			"location_col","location_row",
			"nextMapEntry_col","nextMapEntry_row"};
	
	private String mapName="map";
	private String[] mapAttributes={"id","layer",
			"npc","maptransformer",
			"width","height"};
	
	private String levelName="level";
	private String[] levelAttributes={"id","name","map"};
	
	//读取xml文件,并显示其内容
	public void readXml() throws Exception{
		InputStream ins=this.getClass().getResourceAsStream("/test.xml");
		if (ins==null){
			System.out.println("null InputStream");
		}
		else{
			InputStreamReader reader=new InputStreamReader(ins);
			xmlReader=new XmlReader(reader);
			xmlReader.next();
			xmlReader.require(XmlReader.START_TAG,"dataList");
			System.out.println("dataList name attribute="+xmlReader.getAttributeValue("name"));
			
			while(xmlReader.next()!=XmlReader.END_DOCUMENT){
				try{
					System.out.println(xmlReader.getPositionDescription());
					xmlReader.require(XmlReader.START_TAG,"data");
					System.out.println(xmlReader.getPositionDescription());
					xmlReader.next();
					System.out.println("data name="+xmlReader.getAttributeValue("name")
						+" type="+xmlReader.getAttributeValue("type")
						+" value="+xmlReader.getAttributeValue("value"));
					
					System.out.println(xmlReader.getPositionDescription());
					xmlReader.require(XmlReader.END_TAG,"data");
				}
				catch(Exception e){
					xmlReader.require(XmlReader.END_TAG,"dataList");
				}
			}
			
						
		}
	}
	
	/**
	 * 打开配置
	 */
	public void openConfigure(String resURL){
		InputStream in=this.getClass().getResourceAsStream(resURL);
		InputStreamReader reader=new InputStreamReader(in);
		try{
			xmlReader=new XmlReader(reader);
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	/**
	 * 找到下一个StartTag
	 */
	private void findNextStartTag() throws Exception{
		//遇到StartTag或者xml文档结尾时结束
		while((xmlReader.next()!=XmlReader.START_TAG)&&(xmlReader.getType()!=XmlReader.END_DOCUMENT)){
//			System.out.println(xmlReader.getPositionDescription());
			;
		}
		System.out.println("已经跳过空白字符");
	}
	
	/**
	 * 读取配置头部
	 */
	public void readConfigureHeader(){
		try{
			//读取gmatrix的属性
			xmlReader.next();
			xmlReader.require(XmlReader.START_TAG,"gmatrix");
			System.out.println("gmatrix属性--verion="+xmlReader.getAttributeValue("version"));
			
			//读取configure的属性
			xmlReader.next();
			System.out.println(xmlReader.getPositionDescription());
			xmlReader.require(XmlReader.START_TAG,"configure");
			System.out.println("读完配置头");
			
			//找到下一个StartTag
			findNextStartTag();
		}
		catch(Exception ex){
			System.out.println(ex.getMessage());
		}
	}
	
	/**
	 * 读取配置
	 * @param name 元素名称
	 * @param attr 元素属性名数组
	 */
	public void readConfigure(String name,String[] attr){
		try{
			while(true){
				System.out.println("type="+xmlReader.getType()+" name="+xmlReader.getName());
				//如果是xml文件开头,则首先读取文件头
				if (xmlReader.getType()==XmlReader.START_DOCUMENT){
					readConfigureHeader();
				}
				//如果xml文件结束,则退出
				if (xmlReader.getType()==XmlReader.END_DOCUMENT){
					System.out.println("读取"+name+"时文档结束");
					break;
				}
				//判断是否还是在当前的元素中
				if ((xmlReader.getName()!=null)&&(xmlReader.getName().equals(name)==false)){
					System.out.println("读取"+name+"结束");
					break;
				}
				
				//找到元素的Tag开始位置
				xmlReader.require(XmlReader.START_TAG,name);
				//取出name的属性
				for(int i=0;i<attr.length;i++){
					System.out.println(name+"属性--"+attr[i]+"="+xmlReader.getAttributeValue(attr[i]));
				}
				//移动到下一个位置
				xmlReader.next();
				//读取元素的Tag结束位置
				xmlReader.require(XmlReader.END_TAG,name);
//				System.out.println(xmlReader.getPositionDescription());
				//找到下一个startTag
				findNextStartTag();
			}
		}
		catch(Exception ex){
//			ex.printStackTrace();
			System.out.println("读取"+name+"元素时出现错误:"+ex.getMessage());
		}	
	}
	
	public void readMsgQueueConfigure(){
		readConfigure(msgQueueName,msgQueueAttributes);
	}
	
	public void readEventQueueConfigure(){
		readConfigure(eventQueueName,eventQueueAttributes);
	}
	
	public void readNpcQueueConfigure(){
		readConfigure(npcName,npcAttributes);
	}
	
	public void readMsgConfigure(){
		readConfigure(msgName,msgAttributes);
	}
	
	public void readEventConfigure(){
		readConfigure(eventName,eventAttributes);
	}
	
	public void readPropertyBoxConfigure(){
		readConfigure(propBoxName,propBoxAttributes);
	}
	
	public void readPropertyConfigure(){
		readConfigure(propertyName,propertyAttributes);
	}
	
	public void readActorConfigure(){
		readConfigure(actorName,actorAttributes);
	}
	
	public void readMusicConfigure(){
		readConfigure(musicName,musicAttributes);
	}
	
	public void readCameraConfigure(){
		readConfigure(cameraName,cameraAttributes);
	}
	
	public void readLayerConfigure(){
		readConfigure(layerName,layerAttributes);
	}
	
	public void readTransformerConfigure(){
		readConfigure(transformerName,transformerAttributes);
	}
	
	public void readMapConfigure(){
		readConfigure(mapName,mapAttributes);
	}
	
	public void readLevelConfigure(){
		readConfigure(levelName,levelAttributes);
	}
	
	public static void main(String[] argv){
		XmlReaderPractice x=new XmlReaderPractice();
		
		x.openConfigure("/configure/config.xml");
		
		x.readMsgConfigure();
		x.readMsgQueueConfigure();
		
		x.readEventConfigure();
		x.readEventQueueConfigure();
		
		x.readPropertyConfigure();
		x.readPropertyBoxConfigure();
		
		x.readNpcQueueConfigure();
		
		x.readActorConfigure();
		
		x.readLayerConfigure();
		
		x.readTransformerConfigure();
		
		x.readMapConfigure();
		
		x.readLevelConfigure();
		
		x.readMusicConfigure();
		
		x.readCameraConfigure();
		
//		x.openConfigure("/configure/message/message01.xml");
//		x.readMsgConfigure();
		
//		x.openConfigure("/configure/events/event01.xml");
//		x.readEventConfigure();
		
//		x.openConfigure("/configure/property/prop01.xml");
//		x.readPropertyConfigure();
//		try{
//			x.readXml();
//		}
//		catch(Exception ex){
//			ex.printStackTrace();
//		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -