java生成固定格式的XML檔案,用於報表
阿新 • • 發佈:2019-02-12
package edu.xjtu.sei.skyeye.util; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Timestamp; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import edu.xjtu.sei.AnZhiTest.DAO.TaskDAO; import edu.xjtu.sei.skyeye.business.statistics.styles.FusionChartsStyles; import edu.xjtu.sei.skyeye.businet.util.DateUtils; import edu.xjtu.sei.skyeye.businet.util.PathUtils; import edu.xjtu.sei.skyeye.persistence.dao.MalCodeWebDAO; public class TenMonthChart { private TaskDAO taskDAO; private FusionChartsStyles fusionChartsStyles; private String getPath() { Date yesToday = DateUtils.getYestoday(new Date()); String yestoday = DateUtils.formatDate(yesToday); String path = PathUtils.getContextPath() + "data/" + yestoday + "/TenMonthChart.xml"; path = path.replace("%20", " "); return path; } private Document getDoc(Map<String, String> map) throws DocumentException { Document document = DocumentHelper.createDocument(); Object[] key = map.keySet().toArray(); Arrays.sort(key); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); Element rootElement = document.addElement("chart"); rootElement.addAttribute("xAxisName", "日期"); rootElement.addAttribute("showBorder", "0"); fusionChartsStyles.addStyles(rootElement); rootElement.addAttribute("lineColor", "ff5904"); rootElement.addAttribute("bgColor", "#FFFFFF"); rootElement.addAttribute("canvasBgColor", "#FFFFFF"); rootElement.addAttribute("canvasBorderColor", "#FFFFFF"); rootElement.addAttribute("canvasBgAlpha", "5"); rootElement.addAttribute("baseFont", "宋體"); rootElement.addAttribute("baseFontSize", "10"); rootElement.addAttribute("chartRightMargin", "30");//下面距離右邊 rootElement.addAttribute("chartLeftMargin", "5");//下面距離左邊 rootElement.addAttribute("chartTopMargin", "20"); String monthName; String numStr; for (int i = 0; i < key.length; i++) { Element set = rootElement.addElement("set"); monthName = key[i].toString(); numStr = map.get(key[i]); set.addAttribute("label", monthName.substring(0, 10)); set.addAttribute("value", numStr); // month = monthName.substring(0, 7).replaceAll("-", ""); // 將統計資訊新增到資料庫 // this.saveOrUpdateToDB.SOUCodeNumStatToDB(null, numStr, month); } return document; } @SuppressWarnings("deprecation") public Map<String, String> doStatistics() { Map<String, String> map = new HashMap<String, String>(); Timestamp currentMonth = new Timestamp(System.currentTimeMillis()); currentMonth.setHours(0); currentMonth.setMinutes(0); currentMonth.setSeconds(0); currentMonth.setNanos(0); map = taskDAO.countByDate(currentMonth); if (null == map || map.size() < 1) { map.put("無資料", "1"); } return map; } public void create() throws DocumentException, IOException { // 輸出中文資料。 String path = getPath(); Map<String, String> map = doStatistics(); Document doc = getDoc(map); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer = new XMLWriter(new FileOutputStream(path), format); writer.write(doc); writer.close(); } public void setTaskDAO(TaskDAO taskDAO) { this.taskDAO = taskDAO; } public void setFusionChartsStyles(FusionChartsStyles fusionChartsStyles) { this.fusionChartsStyles = fusionChartsStyles; } }