Java根據word模板生成word文檔之後臺解析和實現及部分代碼(三)A

下面我們主要寫一下 解析XML文件的工具類,這個裏面很多方法。我基本都貼出來,我也說過,解析XML有很多方法,我採用了最原始的。所以很累,你們自己去實現吧。

在這個類裏面有幾個關鍵點要說:

1.解析XML文檔,就最開始定義的那個,最終返回是Map數據集

2.在次之間,可能需要涉及到生成統計圖像等,都是在解析過程中完成的

3.在方法Map數據集中,如果是word中的表格,Key就是表格在word中的序列,我曾經說過,替換表格是按照序列來的;單個標籤key就是標籤本身作爲key

4.注意反正很多細節的東西,我就不很細緻的講了

下面貼出部分代碼:

1.總入口傳入的是相關參數、報告類型:

 /**
	    * 返回 MAP 數據
	    * @return
	    */
	   public HashMap<String,Object> returnValue(String peportXmlPath,Map<String,String> paramMap,String docType){
		   HashMap<String,Object> map = this.getAllData(peportXmlPath, paramMap,docType);
		   return map;
	   }
2.根據SQL語句執行查詢,返回Map數據集

/**
	    * 執行SQL查詢
	    * @param peportXmlPath
	    * @param paramMap
	    * @param docType
	    * @return
	    */
	   public HashMap<String,Object> getAllData(String peportXmlPath,Map<String,String> paramMap,String docType){
		   conn = super.getSession().connection();
		   HashMap<String,Object> map = null;
		   Map<String,List<DataGroupsBean>> sqlMap = getAllSql(peportXmlPath);
		   		map = new HashMap<String,Object>();
				peportXmlPath = peportXmlPath.substring(peportXmlPath.lastIndexOf("/")+1,peportXmlPath.length()-4);
				//===============解析Rep標籤開始====================
				//if(sqlMap.get(peportXmlPath) != null && paramMap != null){//如果map不爲空
					//map = new HashMap<String,List<DataGroupsBean>>();
					Set<Entry<String, List<DataGroupsBean>>> sets = sqlMap.entrySet();
					Iterator<Entry<String, List<DataGroupsBean>>> it = sets.iterator();
					while (it.hasNext()) {
						Map.Entry<String,List<DataGroupsBean>> mapEntry = (Map.Entry<String,List<DataGroupsBean>>)it.next();
						//String key = String.valueOf(mapEntry.getKey());
						List<DataGroupsBean> dataGroupsList = mapEntry.getValue();
						if(dataGroupsList != null && dataGroupsList.size() > 0){
							for (int i = 0; i < dataGroupsList.size(); i++) {
								DataGroupsBean dataGroupsBean = dataGroupsList.get(i);
								if(dataGroupsBean != null){
									List<DataGroupBean> dataGroupList = dataGroupsBean.getDataGroupList();
									if(dataGroupList != null && dataGroupList.size() > 0){
										for (int j = 0; j < dataGroupList.size(); j++) {
											DataGroupBean dataGroupRepBean = dataGroupList.get(j);//取得報告bean
											if(dataGroupRepBean != null){
												//String dataGroupRepName = dataGroupRepBean.getDataGroupName();
												
												List<DataSetsBean> dataSetsRepList = dataGroupRepBean.getDataSetsList();//取得datasets list
												
												//處理 dataSetsRepList 相關內容
												if(dataSetsRepList != null && dataSetsRepList.size() > 0){
													for (DataSetsBean dataSetsRepBean : dataSetsRepList) {
														//String dataSetsRepName = dataSetsRepBean.getDataSetsName();
														List<DataSetBean> dataSetRepList = dataSetsRepBean.getDataSetList();
														if(dataSetRepList != null && dataSetRepList.size() > 0){//dataSetRep不爲空
															for (DataSetBean dataSetRepBean : dataSetRepList) {
																//String dataSetRepName = dataSetRepBean.getDataSetName();
																String sqlStr = dataSetRepBean.getQueryString();//取得SQL語句
																String sort = dataSetRepBean.getSort();//排序
																List<FieldBean> fieldList = (List<FieldBean>)dataSetRepBean.getFieldList();
																String type = dataSetRepBean.getType();
																map = queryValue(map,sqlStr, paramMap, fieldList, type,conn,sort,docType);//調用方法
															}	
														}
													}
												}
												
												//處理 dataTranstorRepList 相關內容
												//取得dataTranstor list
												List<DataTranstorBean> dataTranstorRepList = dataGroupRepBean.getDataTranstorList();
												if(dataTranstorRepList != null && dataTranstorRepList.size() > 0){
													for (DataTranstorBean dataTranstorRepBean : dataTranstorRepList) {
														//String dataTranstorsRepName = dataTranstorRepBean.getDataTranstorsName();
														List<DataSetBean> dataSetRepList = dataTranstorRepBean.getDataSetList();
														if(dataSetRepList != null && dataSetRepList.size() > 0){//dataSetRep不爲空
															for (DataSetBean dataSetRepBean : dataSetRepList) {
																String dataSetRepName = dataSetRepBean.getDataSetName();
																String dataSetRepCnName = dataSetRepBean.getDataSetCnName();//中文名稱
																String sqlStr = dataSetRepBean.getQueryString();//取得SQL語句
																List<FieldBean> fieldList = (List<FieldBean>)dataSetRepBean.getFieldList();
																String type = dataSetRepBean.getType();
																if(CommonUtils.isNotNull(type) && type.indexOf("CI") == -1){
																	for (FieldBean filedbean : fieldList) {
																		String filedKey = filedbean.getKey();
																		String ctype = filedbean.getCtype();
																		String url = filedbean.getUrl();
																		if(CommonUtils.isNotNull(url)){
																			map.put(filedKey, XmlPathDef.getWordFValue(ctype,url));
																		}
																		
																	}
																}else{
																	map.put(dataSetRepName, this.getPhotoUrl(sqlStr,docType,paramMap,dataSetRepCnName,fieldList,conn,type));
																}
																
															}	
														}
													}
												}
												
												//===============解析Rep標籤結束====================	
											}
										}
									}
								}
							}
						}
					}
		        // }
				
		   
		   //關閉連接
		   XmlPathDef.closeComm(conn, stmt, rs);
		   return map;
	   }

3.解析相應的SQL語句,返回Map

/**
	 * 解析比較 找出將要執行的SQL語句
	 * @param tagXmlPath
	 * @param peportXmlPath
	 * @return
	 */
	public Map<String,List<DataGroupsBean>> getAllSql(String peportXmlPath){
		Map<String,DataGroupBean> dataGroupMap = mapData;
		Map<String,List<DataGroupsBean>> dataGroupsMap = parseReportInfo(peportXmlPath);
		peportXmlPath = peportXmlPath.substring(peportXmlPath.lastIndexOf("/")+1,peportXmlPath.length()-4);
		//===============解析Rep標籤開始====================
		//if(dataGroupsMap.get(peportXmlPath) != null){//如果map不爲空
			Set<Entry<String, List<DataGroupsBean>>> sets = dataGroupsMap.entrySet();
			Iterator<Entry<String, List<DataGroupsBean>>> it = sets.iterator();
			while (it.hasNext()) {
				Map.Entry<String,List<DataGroupsBean>> mapEntry = (Map.Entry<String,List<DataGroupsBean>>)it.next();
				//String key = String.valueOf(mapEntry.getKey());
				List<DataGroupsBean> dataGroupsList = mapEntry.getValue();
				if(dataGroupsList != null && dataGroupsList.size() > 0){
					for (int i = 0; i < dataGroupsList.size(); i++) {
						DataGroupsBean dataGroupsBean = dataGroupsList.get(i);
						if(dataGroupsBean != null){
							List<DataGroupBean> dataGroupList = dataGroupsBean.getDataGroupList();
							if(dataGroupList != null && dataGroupList.size() > 0){
								for (int j = 0; j < dataGroupList.size(); j++) {
									DataGroupBean dataGroupRepBean = dataGroupList.get(j);//取得報告bean
									if(dataGroupRepBean != null){
										String dataGroupRepName = dataGroupRepBean.getDataGroupName();
										
										//取得datasets list
										List<DataSetsBean> dataSetsRepList = dataGroupRepBean.getDataSetsList();
										
										if(dataSetsRepList != null && dataSetsRepList.size() > 0){
											for (DataSetsBean dataSetsRepBean : dataSetsRepList) {
												String dataSetsRepName = dataSetsRepBean.getDataSetsName();
												List<DataSetBean> dataSetRepList = dataSetsRepBean.getDataSetList();
												if(dataSetRepList != null && dataSetRepList.size() > 0){//dataSetRep不爲空
													for (DataSetBean dataSetRepBean : dataSetRepList) {
														String dataSetRepName = dataSetRepBean.getDataSetName();
														//===============解析Rep標籤結束====================
														
														
														//===============解析tag標籤開始====================
														
														//判斷 dataGroupRepName 名稱是否相同
														if(dataGroupMap.get(dataGroupRepName) != null){//如果map不爲空
															Set<Entry<String, DataGroupBean>> set = dataGroupMap.entrySet();
															Iterator<Entry<String, DataGroupBean>> its = set.iterator();
															while (its.hasNext()) {
																Map.Entry<String,DataGroupBean> entry = (Map.Entry<String,DataGroupBean>)its.next();
																DataGroupBean dataGroupTagBean = (DataGroupBean)entry.getValue();//取得標籤bean
																//System.out.println(">>>>>>>>>>>>>>>>> "+ dataGroupTagBean);
																if(dataGroupTagBean != null){
																	List<DataSetsBean> dataSetsTagList = dataGroupTagBean.getDataSetsList();
																	if(dataSetsTagList != null && dataSetsTagList.size() > 0){
																		for (DataSetsBean dataSetsTagBean : dataSetsTagList) {
																			String dataSetsTagName = dataSetsTagBean.getDataSetsName(); 
																			//判斷 dataSets 名稱是否相同
																			if(dataSetsRepName.equals(dataSetsTagName)){
																				List<DataSetBean> dataSetTagList = dataSetsTagBean.getDataSetList();
																				if(dataSetTagList != null && dataSetTagList.size() > 0){
																					for (DataSetBean dataSetTagBean : dataSetTagList) {
																						String dataSetTagName = dataSetTagBean.getDataSetName();
																						//判斷 dataSet 名稱是否相同
																						if(dataSetRepName.equals(dataSetTagName)){
																							//System.out.println("sql++++++++++++++++++++++="+ dataSetTagBean.getQueryString());
																							//map.put(dataSetTagName, sql);
																							dataSetRepBean.setQueryString(dataSetTagBean.getQueryString());
																							dataSetRepBean.setParameterList(dataSetTagBean.getParameterList());
																							dataSetRepBean.setDataSetCnName(dataSetTagBean.getDataSetCnName());
																							dataSetRepBean.setFieldList(dataSetTagBean.getFieldList());
																							dataSetRepBean.setType(dataSetTagBean.getType());
																						}
																				   }
																			   }
																			}
																	  }
															     }
												             }	
											     	     }
											         }
													//===============解析tag標籤結束====================
													//dataSetRepList.add(dataSetRepBean);
														
												}
											}
										}
									}
										
									//取得dataTranstor list
									List<DataTranstorBean> dataTranstorRepList = dataGroupRepBean.getDataTranstorList();
									
									//===============解析tag標籤開始====================
									if(dataTranstorRepList != null && dataTranstorRepList.size() > 0){
										for (DataTranstorBean dataTranstorRepBean : dataTranstorRepList) {
											String dataTranstorsRepName = dataTranstorRepBean.getDataTranstorsName();
											List<DataSetBean> dataSetRepList = dataTranstorRepBean.getDataSetList();
											if(dataSetRepList != null && dataSetRepList.size() > 0){//dataSetRep不爲空
												for (DataSetBean dataSetRepBean : dataSetRepList) {
													String dataSetRepName = dataSetRepBean.getDataSetName();
														//判斷 dataGroupRepName 名稱是否相同
														if(dataGroupMap.get(dataGroupRepName) != null){//如果map不爲空
															Set<Entry<String, DataGroupBean>> set = dataGroupMap.entrySet();
															Iterator<Entry<String, DataGroupBean>> its = set.iterator();
															while (its.hasNext()) {
																Map.Entry<String,DataGroupBean> entry = (Map.Entry<String,DataGroupBean>)its.next();
																DataGroupBean dataGroupTagBean = (DataGroupBean)entry.getValue();//取得標籤bean
																//System.out.println(">>>>>>>>>>>>>>>>> "+ dataGroupTagBean);
																if(dataGroupTagBean != null){
																	//List<DataSetsBean> dataSetsTagList = dataGroupTagBean.getDataSetsList();
																	
																	//============暫未解析===============
																	List<DataTranstorBean> dataTranstorTagList = dataGroupTagBean.getDataTranstorList();
																	if(dataTranstorTagList != null && dataTranstorTagList.size() > 0){
																		for (DataTranstorBean dataTranstorTagBean : dataTranstorTagList) {
																			String dataTranstorTagName = dataTranstorTagBean.getDataTranstorsName(); 
																			//判斷 dataSets 名稱是否相同
																			if(dataTranstorsRepName.equals(dataTranstorTagName)){
																				List<DataSetBean> dataSetTagList = dataTranstorTagBean.getDataSetList();
																				if(dataSetTagList != null && dataSetTagList.size() > 0){
																					for (DataSetBean dataSetTagBean : dataSetTagList) {
																						String dataSetTagName = dataSetTagBean.getDataSetName();
																						//判斷 dataSet 名稱是否相同
																						if(dataSetRepName.equals(dataSetTagName)){
																							//System.out.println("sql++++++++++++++++++++++="+ dataSetTagBean.getQueryString());
																							//map.put(dataSetTagName, sql);
																							dataSetRepBean.setQueryString(dataSetTagBean.getQueryString());
																							dataSetRepBean.setParameterList(dataSetTagBean.getParameterList());
																							dataSetRepBean.setFieldList(dataSetTagBean.getFieldList());
																							dataSetRepBean.setDataSetCnName(dataSetTagBean.getDataSetCnName());
																							dataSetRepBean.setType(dataSetTagBean.getType());
																						}
																				   }
																			   }
																			}
																	  }
															     }
												             }	
											     	     }
											         }
												}
											}
										}
									}
									//===============解析tag標籤結束====================
									//dataSetRepList.add(dataSetRepBean);
								}
							}
						}
					}
				}
			  }
		    }
		//}
		return dataGroupsMap;
	   }

4.靜態方法,xml只解析一次,下次同類型的就直接取

CreatPieForReport creatPieForReport;
	private static Map<String,DataGroupBean> mapData = new HashMap<String,DataGroupBean>();
	
	static{
		mapData = parseTagInfo();
	}

5.解析xml標籤(根據層級關係全部解析出來放入Map中)

/**
	 * 解析 標籤 XML文件
	 * @param xmlpath XML文件路徑
	 * @return
	 */
	public static Map<String,DataGroupBean> parseTagInfo() { 
		File f = new File(XmlPathDef.getTagPath()); //新建文件實例
		//System.out.println(f);
    	File[] list = f.listFiles();        /* 此處獲取文件夾下的所有文件 */
    	Map<String,DataGroupBean> map = new HashMap();
		SAXBuilder builder=new SAXBuilder(false); 
    	for(int i=0;i<list.length;i++){
    		//System.out.println("path:-------------" + XmlPathDef.getTagPath() + list[i].getName());//打印全路徑
    		if(list[i].getName().substring(list[i].getName().length()-4, list[i].getName().length()).equals(".xml")){
    			String tagXmlPath = XmlPathDef.getTagPath() + list[i].getName();
    			try { 
    				 Document xml = builder.build(tagXmlPath); 
    				 Element root = xml.getRootElement(); 
    				 DataGroupBean dataGroupBean =  new DataGroupBean();
    				 dataGroupBean.setDataGroupName(root.getAttributeValue(NAME));
    				 List<Object> dataSetsOrTranstorList = root.getChildren(); //獲取所有的子節點
    				 List<DataSetsBean> dataSetsList = new ArrayList<DataSetsBean>();
    				 List<DataTranstorBean> dataTranstorList = new ArrayList<DataTranstorBean>();
    				 if(dataSetsOrTranstorList != null && dataSetsOrTranstorList.size()>0){
    					 for(Iterator<Object> itfs = dataSetsOrTranstorList.iterator(); itfs.hasNext();) { 
    						 Element dataSetssOrTranstorObj = (Element)itfs.next();
    						 if(dataSetssOrTranstorObj.getAttributeValue(NAME).equals("dataSets")){
    							 DataSetsBean dataSetsBean =  getDataSetsBean(dataSetssOrTranstorObj);
    							 if(dataSetsBean != null){
    								 dataSetsList.add(dataSetsBean);
    							   }
    							  dataGroupBean.setDataSetsList(dataSetsList);
    					      }else if(dataSetssOrTranstorObj.getAttributeValue(NAME).equals("dataTranstor")){//暫時未處理
    					    	  DataTranstorBean dataTranstorBean = getDataTranstorBean(dataSetssOrTranstorObj);
     							  if(dataTranstorBean != null){
     								dataTranstorList.add(dataTranstorBean);
     							   }
    					    	  dataGroupBean.setDataTranstorList(dataTranstorList);
    					      }
    					 }
    				 }
    				 map.put(root.getAttributeValue(NAME), dataGroupBean);
    			 } catch (JDOMException e) { 
    				 e.printStackTrace(); 
    			 } catch (IOException e) { 
    				e.printStackTrace(); 
    		   }
    		}
    	}
	  return map;
} 

/**
	 * 獲取DataSetsBean對象列表
	 * @param dataSetsList
	 */
	public static DataSetsBean getDataSetsBean(Element dataSetsObj){
		DataSetsBean dataSetsBean = null;
		 if(dataSetsObj != null){
			 dataSetsBean = new DataSetsBean();
			 String dataSetsName = dataSetsObj.getAttributeValue(NAME);
			 dataSetsBean.setDataSetsName(dataSetsName);
			 List<Object> dataSetList = dataSetsObj.getChildren(); //獲取  dataSet 所有的子節點
			 dataSetsBean.setDataSetList(getDataSetBean(dataSetList));
	       }
		return dataSetsBean;
	}

/**
	 * 獲取DataSetBean對象列表
	 * @param dataSetList
	 */
	public static List<DataSetBean> getDataSetBean(List<Object> dataSetList){
		List<DataSetBean> list = new ArrayList<DataSetBean>();
		DataSetBean dataSetBean = null;
		 if(dataSetList != null && dataSetList.size()>0){
			 for(Iterator<Object> iter = dataSetList.iterator(); iter.hasNext();) { 
				 Element thirdObj = (Element)iter.next(); 
				 dataSetBean = new DataSetBean();
				 String dataSetName = thirdObj.getAttributeValue(NAME); //名稱
				 dataSetBean.setDataSetName(dataSetName);
				 String dataSetCnName = thirdObj.getAttributeValue(CNNAME); //中文名稱
				 dataSetBean.setDataSetCnName(dataSetCnName);
				 String dataSetType=thirdObj.getAttributeValue("type"); //類型
				 dataSetBean.setType(dataSetType);
				 String queryString =thirdObj.getChildTextTrim("queryString");
				 dataSetBean.setQueryString(queryString); //獲取查詢的SQL語句
				 List<Object> parameterList = thirdObj.getChildren("parameter");//獲取參數列表
				 dataSetBean.setParameterList(getParameterBean(parameterList));
				 List<Object> fieldList = thirdObj.getChildren("field");//獲取查詢字段列表
				 dataSetBean.setFieldList(getFieldBean(fieldList));
				 list.add(dataSetBean);
			   }
	       }
		return list;
	}

/**
	 * 獲取Filed對象列表
	 * @param fieldList
	 */
	public static List<FieldBean> getFieldBean(List<Object> fieldList){
		List<FieldBean> list = new ArrayList<FieldBean>();
		FieldBean fieldBean = null;
		int i = 1;
		if(fieldList != null && fieldList.size()>0){
			for(Iterator<Object> iters = fieldList.iterator(); iters.hasNext();) { 
				 Element fourthObj = (Element)iters.next(); 
				 fieldBean = new FieldBean();
			 	 String key = fourthObj.getAttributeValue("key"); 
			 	 fieldBean.setKey(key);
			 	 String fname = fourthObj.getAttributeValue(NAME); 
			 	 fieldBean.setName(fname);
			 	 String column = fourthObj.getAttributeValue("column"); 
			 	 fieldBean.setColumn(column);
			 	 String ctype = fourthObj.getAttributeValue("ctype"); 
			 	 fieldBean.setCtype(ctype);
			 	 String url = fourthObj.getAttributeValue("url"); 
			 	 fieldBean.setUrl(url);
			 	 String sort = fourthObj.getAttributeValue("sort"); 
			 	 if(CommonUtils.isNotNull(sort)){
			 		fieldBean.setSort(sort);
			 	 }else{
			 		fieldBean.setSort(String.valueOf(i));
			 	 }
			 	 list.add(fieldBean);
			 	 i++;
		     }
	    }
		return list;
	}

/**
	 * 獲取 DataGroupsBean 對象列表
	 * @param dataGroupsList
	 */
	public List<DataGroupsBean> getReportDataGroupsBean(List<Object> dataGroupsList){
		List<DataGroupsBean> list = new ArrayList<DataGroupsBean>();
		DataGroupsBean dataGroupsBean = null;
		 if(dataGroupsList != null && dataGroupsList.size()>0){
			 for(Iterator<Object> itfs = dataGroupsList.iterator(); itfs.hasNext();) { //遍歷出所有的 dataGroups 列表
				 Element dataGroupsObj = (Element)itfs.next(); 
				 dataGroupsBean = new DataGroupsBean();
				 String dataGroupsName = dataGroupsObj.getAttributeValue(NAME);
				 dataGroupsBean.setDataGroupsName(dataGroupsName);
				 List<Object> dataGroupList = dataGroupsObj.getChildren(); //獲取  dataGroup 所有的子節點列表
				 dataGroupsBean.setDataGroupsList(getReportDataGroupBean(dataGroupList));
				 list.add(dataGroupsBean);
			   } 
		    }
		return list;
	}


/**
	 * 獲取DataGroupBean對象列表
	 * @param dataGroupList
	 */
	public List<DataGroupBean> getReportDataGroupBean(List<Object> dataGroupList){
		List<DataGroupBean> list = new ArrayList<DataGroupBean>();
		DataGroupBean dataGroupBean = null;
		  if(dataGroupList != null && dataGroupList.size()>0){
			 for(Iterator<Object> iter = dataGroupList.iterator(); iter.hasNext();) { 
			     Element dataGroupObj = (Element)iter.next(); 
			     dataGroupBean = new DataGroupBean();
				 String dataGroupName = dataGroupObj.getAttributeValue(NAME);
				 dataGroupBean.setDataGroupName(dataGroupName);
				 List<Object> dataSetsOrTranstorList = dataGroupObj.getChildren(); //獲取  dataSets 所有的子節點列表
				 List<DataSetsBean> dataSetsRepList = new ArrayList<DataSetsBean>();
				 List<DataTranstorBean> dataTranstorList = new ArrayList<DataTranstorBean>();
				 if(dataSetsOrTranstorList != null && dataSetsOrTranstorList.size()>0){
					 for(Iterator<Object> itfs = dataSetsOrTranstorList.iterator(); itfs.hasNext();) { 
						 Element dataSetOrTranstorObj = (Element)itfs.next(); 
						 String dataSetsName = dataSetOrTranstorObj.getAttributeValue(NAME);
						 if(dataSetsName.equals("dataSets")){
							 DataSetsBean dataSetsBean =  getReportDataSetsBean(dataSetOrTranstorObj);
							 if(dataSetsBean != null){
								 dataSetsRepList.add(dataSetsBean);
							 }
							  dataGroupBean.setDataSetsList(dataSetsRepList);
					      }else if(dataSetsName.equals("dataTranstor")){//暫時未處理
					    	  DataTranstorBean dataTranstorsBean =  getReportDataTranstorBean(dataSetOrTranstorObj);
  							  if(dataTranstorsBean != null){
  								dataTranstorList.add(dataTranstorsBean);
  							   }
 					    	  dataGroupBean.setDataTranstorList(dataTranstorList);
					      }
					 }
				 }
				 list.add(dataGroupBean);
			   }
	       }
		return list;
	}

/**
	 * 獲取DataSetsBean對象列表
	 * @param dataSetsList
	 */
	public DataSetsBean getReportDataSetsBean(Element dataSetsObj){
		DataSetsBean dataSetsBean = null;
		 if(dataSetsObj != null){
			 dataSetsBean = new DataSetsBean();
			 String dataSetsName = dataSetsObj.getAttributeValue(NAME);
			 dataSetsBean.setDataSetsName(dataSetsName);
			 List<Object> dataSetList= dataSetsObj.getChildren(); //獲取  dataSet 所有的子節點
			 dataSetsBean.setDataSetList(getReportDataSetBean(dataSetList));
	       }
		return dataSetsBean;
	}

/**
	 * 獲取 getReportDataTranstorBean 對象列表
	 * @param dataSetsList
	 */
	public DataTranstorBean getReportDataTranstorBean(Element transtorsObj){
		DataTranstorBean dataTranstorsBean = null;
		 if(transtorsObj != null){
			 dataTranstorsBean = new DataTranstorBean();
			 String dataTranstorName = transtorsObj.getAttributeValue(NAME);
			 dataTranstorsBean.setDataTranstorsName(dataTranstorName);
			 List<Object> dataSetList = transtorsObj.getChildren(); //獲取  dataTranstor 所有的子節點
			 dataTranstorsBean.setDataSetList(getReportDataSetBean(dataSetList));
	       }
		return dataTranstorsBean;
	}

/**
	 * 獲取ReportDataSetBean對象列表
	 * @param dataSetList
	 */
	public List<DataSetBean> getReportDataSetBean(List<Object> dataSetList){
		List<DataSetBean> list = new ArrayList<DataSetBean>();
		DataSetBean dataSetBean = null;
		if(dataSetList != null && dataSetList.size()>0){
			 for(Iterator<Object> iter1 = dataSetList.iterator(); iter1.hasNext();) { 
			     Element dataSetObj = (Element)iter1.next(); 
			     dataSetBean = new DataSetBean();
				 String dataSetName = dataSetObj.getAttributeValue(NAME); 
				 String sort = dataSetObj.getAttributeValue("sort"); 
				 dataSetBean.setDataSetName(dataSetName);
				 dataSetBean.setSort(sort==null?"":sort);
				 list.add(dataSetBean);
	       }
	   }
		return list;
	}

/**
	 * 解析定義的報告 XML文件
	 * @param xmlpath XML文件路徑
	 * @return
	 */
	public Map<String,List<DataGroupsBean>> parseReportInfo(String peportXmlPath) { 
		Map<String,List<DataGroupsBean>> map = null;
		 SAXBuilder builder=new SAXBuilder(false); 
		 Document xml;
		try {
			xml = builder.build(peportXmlPath);
			Element root = xml.getRootElement(); 
			List<Object> dataGroupsList = root.getChildren(); //獲取所有的子節點
			List<DataGroupsBean> dataGroupsBean = getReportDataGroupsBean(dataGroupsList);
			map = new HashMap<String,List<DataGroupsBean>>();
			map.put(root.getAttributeValue(NAME), dataGroupsBean);
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		 
	  return map;
   } 

(未完待續)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章