收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 学习问题讨论 »Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 求解?  XML
发表人 内容
weir
[头像]

交流经验:
总积分:36887
级别:VIP5
注册时间: 2012-05-08
文章: 7
离线

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.weir.mgen.configure.implementors.xmlimpl.RootConfXmlImpl.readNeedGens(RootConfXmlImpl.java:56)
at com.weir.mgen.configure.implementors.xmlimpl.RootConfXmlImpl.getNeedGens(RootConfXmlImpl.java:21)
at com.weir.mgen.configure.manage.ConfManage.readRootConf(ConfManage.java:74)
at com.weir.mgen.configure.manage.ConfManage.readConf(ConfManage.java:33)
at com.weir.mgen.configure.manage.ConfManage.<init>(ConfManage.java:16)
at com.weir.mgen.configure.manage.ConfManage.getInstance(ConfManage.java:21)
at com.weir.mgen.configure.RootConfImpl.getGenConf(RootConfImpl.java:29)
at com.weir.test.MyTest.main(MyTest.java:33)
程序为:
package com.weir.mgen.configure.implementors.xmlimpl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.weir.mgen.configure.implementors.RootConfImplementor;
import com.weir.mgen.configure.implementors.ThemeConfImplementor;
import com.weir.mgen.configure.vo.NeedGenModel;
import com.weir.mgen.configure.vo.ThemeModel;
import com.weir.mgen.constants.ExpressionEnum;
import com.weir.mgen.util.readxml.Context;
import com.weir.mgen.util.readxml.ReadXmlExpression;
import com.weir.mgen.util.readxml.parser.Parser;

public class RootConfXmlImpl implements RootConfImplementor{

@Override
public List<NeedGenModel> getNeedGens() {
return readNeedGens();
}

@Override
public List<ThemeModel> getThemes() {
return readThemes();
}

@Override
public Map<String, String> getMapconstants() {
return readMapconstants();
}
private Context getContext(){
Context c = null;
try {
//System.out.println(new RootConfBuilder().addXmlFilePre().addGenConf().addDot().addXml().build());
c= Context.getInstance(new RootConfBuilder().addXmlFilePre().addGenConf().addDot().addXml().build());
} catch (Exception e) {
e.printStackTrace();
}
return c;
}

private List<NeedGenModel> readNeedGens() {
List<NeedGenModel> list = new ArrayList<NeedGenModel>();

Context c = this.getContext();

String[] needGenIds = parseNeedGenIds(c);
String[] needProviders = parseNeedGenProviders(c);
String[] needThemeIds = parseNeedGenThemeIds(c);

for (int i = 0; i < needGenIds.length; i++) {
NeedGenModel ngm = new NeedGenModel();
ngm.setId(needGenIds[i]);
ngm.setProvider(needProviders[i]);
ngm.setTheme(needThemeIds[i]);

String[] paramIds = parseParamIds(c, ngm.getId());
String[] paramValues = parseParamValues(c, ngm.getId());

Map<String, String> map = new HashMap<String, String>();
for (int j = 0; j < paramIds.length; j++) {
map.put(paramIds[j], paramValues[j]);
}
ngm.setMapParams(map);
list.add(ngm);
}

return list;
}

private String[] parseNeedGenIds(Context c) {
c.init();
//genconf/needgens/needgen$.id$
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
.addNeedGen().addDollar().addDot().addId().addDollar().build());
return re.interpret(c);
}

private String[] parseNeedGenProviders(Context c) {
c.init();
// System.out.println("11111111111===="+new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
// .addNeedGen().addDollar().addDot().addProvider().addDollar().build());
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
.addNeedGen().addDollar().addDot().addProvider().addDollar().build());
return re.interpret(c);
}
private String[] parseNeedGenThemeIds(Context c) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
.addNeedGen().addDollar().addDot().addThemeId().addDollar().build());
return re.interpret(c);
}
private String[] parseParamIds(Context c,String needGenId) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
.addNeedGen().addDollar()
.addOpenBracket().addId().addEqual().addOtherValue(needGenId).addCloseBracket()
.addSeparator().addParams().addDollar().addSeparator().addParam().addDollar()
.addDot().addId().addDollar().build());
return re.interpret(c);
}
private String[] parseParamValues(Context c,String neefGenId) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addNeedGens().addSeparator()
.addNeedGen().addDollar().addOpenBracket().addId().addEqual().addOtherValue(neefGenId)
.addCloseBracket().addSeparator().addParams().addDollar().addSeparator().addParam().addDollar()
.build());
return re.interpret(c);
}

////////////////////////////////////////////////////
private List<ThemeModel> readThemes() {
List<ThemeModel> themeModels = new ArrayList<ThemeModel>();
Context c = this.getContext();

String[] ids = parseThemeIds(c);
String[] locations = parseLocations(c);

for (int i = 0; i < ids.length; i++) {
ThemeModel tm = new ThemeModel();

tm.setId(ids[i]);
tm.setLocation(locations[i]);

ThemeConfImplementor thImpl = new ThemeConfXmlImpl();

Map<String, String> params = new HashMap<String,String>();
params.put(ExpressionEnum.location.getExpr(), locations[i]);

tm.setMapGenOutTypes(thImpl.getMapGenOutTypes(ids[i], params));
tm.setMapGenTypes(thImpl.getMapGenTypes(ids[i], params));
tm.setMapProviders(thImpl.getMapProviders(ids[i], params));

themeModels.add(tm);
}
return themeModels;
}

private String[] parseThemeIds(Context c) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addThemes().addSeparator()
.addTheme().addDollar().addDot().addId().addDollar().build());
return re.interpret(c);
}
private String[] parseLocations(Context c) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addThemes().addSeparator()
.addTheme().addDollar().build());
return re.interpret(c);
}

//////////////////////////////////////////////////////
private Map<String, String> readMapconstants() {
Map<String, String> map = new HashMap<String,String>();
Context c = this.getContext();

String[] ids = parseConstantIds(c);
String[] values = parseConstantValues(c);

for (int i = 0; i < ids.length; i++) {
map.put(ids[i], values[i]);
}

return map;
}

private String[] parseConstantIds(Context c) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addConstants().addSeparator()
.addConstant().addDollar().addDot().addId().addDollar().build());
return re.interpret(c);
}
private String[] parseConstantValues(Context c) {
c.init();
ReadXmlExpression re = Parser.parser(new RootConfBuilder().addGenConf().addSeparator().addConstants().addSeparator()
.addConstant().addDollar().build());
return re.interpret(c);
}
}
不知道为什么会出这样的错误? 请老师看看,谢谢

推广链接
精品视频课程推荐

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

Java Web开发-项目部分(中国移动科技综合管理系统)视频教程
中国移动科技综合管理系统,对JDBC实现CRUD的抽象化和复用化;UUID自动生成;分层开发、综合示范Jsp+Servlet+JavaBean+TagLib+JSTL+JDBC的实现;Web分页、Web树、日期控件、真实值和表现值转换;众多杂项技术的实现,比如:tab、左右选择等等

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

Javascript基础视频教程
JavaScript的内置对象--Array、String、Date、Math等,可以通过DOM对象进行对象控制,创建控制菜单及复选框的控制,创建二级联动列表框及列表框选项的移动,JavaScript项目,创建基于JS的商品管理系统。



个性签名:爱是行动的唯一标准
 
交流首页 » 学习问题讨论
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网