收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 学习问题讨论 »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);
}
}
不知道为什么会出这样的错误? 请老师看看,谢谢

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

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

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

ant基础实战视频教程
学习项目构建工具ant的使用,彻底掌握在实际的开发中应用ant进行项目构建

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



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

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

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