/** * 把分解出来的元素名称,根据对应的解析模型转换成为相应的解释器对象 * * @param mapPath 分解出来的需要解析的元素名称,还有该元素对应的解析模型 * @return 把每个元素转换成为相应的解释器对象后的集合 */ private static List<ReadXmlExpression> mapPath2Interpreter(Map<String, ParserModel> mapPath) { List<ReadXmlExpression> list = new ArrayList<ReadXmlExpression>(); // 一定要按照分解的先后顺序来转换成解释器对象 for (String key : listEle) { ParserModel pm = mapPath.get(key); ReadXmlExpression obj = null; if (!pm.isEnd()) { if (pm.isSingleVlaue()) { // 不是最后一个,是一个值,转化为 obj = new ElementExpression(key); } else { // 不是最后一个,是多个值,转化为 obj = new ElementsExpression(key); } } else { if (pm.isPropertyValue()) { if (pm.isSingleVlaue()) { // 是最后一个,是一个值,取属性的值,转化为 obj = new PropertyTerminalExpression(key); } else { // 是最后一个,是多个值,取属性的值,转化为 obj = new PropertysTerminalExpression(key); } } else { if (pm.isSingleVlaue()) { // 是最后一个,是一个值,取元素的值,转化为 obj = new ElementTerminalExpression(key); } else { // 是最后一个,是多个值,取元素的值,转化为 obj = new ElementsTerminalExpression(key); } } } // 把转换后的对象添加到集合中 list.add(obj); } return list; }