📄 xmlreaderpractice.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 + -