把字符串写入XML文件
/** * 创建文件夹 * @param filePath * @return */ public boolean makeDirs() { String folderName = IReportServer.getTempDir() + File.separator + "hubei"; if (StrFunc.isNull(folderName)) { return false; } File folder = new File(folderName); return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs(); } /** * 向工作目录写XML文件保存数据 * @return * @throws Exception */ public void writeXml2WorkRoot(String xmlStr) throws Exception { Document document = DocumentHelper.parseText(xmlStr); //写入.xml文件 writerDocumentToNewFile(document); } //document写入新的文件 private void writerDocumentToNewFile(Document document) throws Exception { //输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); //设置编码 format.setEncoding("UTF-8"); //XMLWriter 指定输出文件以及格式 if (makeDirs()) { XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File(IReportServer.getTempDir() + File.separator + "hubei" + File.separator + System.currentTimeMillis() + ".xml")), "UTF-8"), format); try { System.out.println("写入XML成功"); //写入新文件 writer.write(document); writer.flush(); } finally { writer.close(); } } else { System.out.println("写入XML失败"); } }根据不同的数据解析XML文件,一种直接解析XML文件,另外一种解析XML格式的字符串
/** * 解析XML * @param url * @return * @throws Exception */ public List readXml(String url) throws Exception { List messages = new ArrayList(); SAXReader reader = new SAXReader(); File file = new File(url); Document document = reader.read(file); Element root = document.getRootElement(); List childElements = root.elements(); ArrayList list = new ArrayList(); initList(list); Connection conn = IReportServer.getInstance().getConnection(); try { //clearTable(conn); /** * 解析XML文件,存入Data中 */ Iterator iterator = childElements.iterator(); do { Element child = (Element) iterator.next(); HashMap map = new HashMap(); String id = child.elementText("ID"); for (int i = 0; i < keys.length; i++) { map.put(keys[i], child.elementText(keys[i])); } Data data = new Data(id, map); Message message = data.check(); if (message == null) { messages.add(insertData(messages, data, conn, list)); } else { messages.add(message); } } while (iterator.hasNext()); } finally { conn.close(); } return messages; } /** * 根据字符串解析 * @param xml * @return * @throws Exception */ public List readXmlByString(String xml) throws Exception { List messages = new ArrayList(); Document document = DocumentHelper.parseText(xml); Element root = document.getRootElement(); List childElements = root.elements(); ArrayList list = new ArrayList(); initList(list); Connection conn = IReportServer.getInstance().getConnection(); try { //clearTable(conn); /** * 解析XML文件,存入Data中 */ Iterator iterator = childElements.iterator(); do { Element child = (Element) iterator.next(); HashMap map = new HashMap(); String id = child.elementText("ID"); for (int i = 0; i < keys.length; i++) { map.put(keys[i], child.elementText(keys[i])); } Data data = new Data(id, map); Message message = data.check(); if (message == null) { messages.add(insertData(messages, data, conn, list)); } else { messages.add(message); } } while (iterator.hasNext()); } finally { conn.close(); } return messages; }插入数据
/** * 插入数据 * @param data * @param conn * @param list * @return * @throws Exception */ public Message insertData(List Messages, Data data, Connection conn, List list) throws Exception { //返回错误消息 Message message = new Message(); dataMap = data.getDataMap(); message.setId(data.getID()); //已知属性名情况下 if (!list.contains(data.getID())) { list.add(data.getID()); excuteDone(insertSql, 2, conn, data, dataMap); //设置成功 message.setIsSuccess(0); message.setReason("插入成功"); } else { //设置失败 message.setIsSuccess(1); message.setReason("已存在"); //更新数据 //System.out.println(deleteSql); PreparedStatement pstat = conn.prepareStatement(deleteSql); try { pstat.setString(1, data.getID()); pstat.executeQuery(); } finally { pstat.close(); } excuteDone(insertSql, 2, conn, data, dataMap); message.setIsSuccess(0); message.setReason("已存在但更新成功"); } return message; } /** * 执行sql语句拼接加上操作 * @param sql * @param index * @param conn * @param data * @throws SQLException * @throws ParseException */ public void excuteDone(String sql, int index, Connection conn, Data data, HashMap dataMap) throws SQLException, ParseException { if (!StrFunc.isNull(sql)) { PreparedStatement pstat = conn.prepareStatement(sql); try { pstat.setString(1, data.getID()); for (int i = 0; i < keys.length; i++) { if ("VARCHAR".equals(types[i])) { pstat.setString(i + index, (String) dataMap.get(keys[i])); } else if ("CLOB".equals(types[i])) { //pstat.setClob(i + 2, (oracle.sql.CLOB) data.getDataMap().get(keys[i])); pstat.setString(i + index, (String) dataMap.get(keys[i])); } else if ("DATE".equals(types[i])) { if (StrFunc.isNull((String) dataMap.get(keys[i]))) { pstat.setDate(i + index, null); } else { pstat.setDate(i + index, string2Date((String) dataMap.get(keys[i]))); } } else if ("TIMESTAMP".equals(types[i])) { if (!StrFunc.isNull((String) dataMap.get(keys[i]))) { pstat.setTimestamp(i + index, string2Time((String) dataMap.get(keys[i]))); } else { pstat.setTimestamp(i + index, null); } } } pstat.executeQuery(); } finally { pstat.close(); } } else { System.out.println("sql为空"); } }用TRUNCATE清楚表笔DELETE好
/** * 清除表 * @param conn * @throws SQLException */ private void clearTable(Connection conn) throws SQLException { Statement deleteState = conn.createStatement(); try { deleteState.executeUpdate(truncateSql); } finally { deleteState.close(); } }将String类型转换成可以存到数据库的类型
/** * String转型到Timestamp * @param dateString * @return * @throws java.text.ParseException */ public Timestamp string2Time(String dateString) throws java.text.ParseException { DateFormat dateFormat; dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.CHINESE);// 设定格式 dateFormat.setLenient(false);// 严格控制输入 比如2010-02-31,根本没有这一天 ,也会认为时间格式不对。 Date timeDate = dateFormat.parse(dateString);// util类型 Timestamp dateTime = new Timestamp(timeDate.getTime());// Timestamp类型,timeDate.getTime()返回一个long型 return dateTime; } /** * String转型到Date 而且是java.util.Date到java.sql.Date * @param str * @return * @throws ParseException */ public java.sql.Date string2Date(String str) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//小写的mm表示的是分钟 Date date = sdf.parse(str); java.sql.Date sqlDate = new java.sql.Date(date.getTime()); return sqlDate; }返回的时候一种字符串的拼接
/** * 转换成JSON数据给返回 * @param messages * @return */ public String toJSON(List messages) { System.out.println(messages.size()); if (messages.size() == 0) { return "数据为空"; } else { StringBuffer str = new StringBuffer(); str.append("["); Iterator iterator = messages.iterator(); do { Message message = (Message) iterator.next(); //组装一个对象 开始 str.append("{\"id\":"); str.append("\"" + message.getId() + "\","); str.append("\"reason\":"); str.append("\"" + message.getReason() + "\","); str.append("\"isSuccess\":"); str.append("\"" + message.getIsSuccess() + "\"}"); //判断是否为最后一条数据,不是最后一条数据不需要加逗号---加了逗号也不影响,可以不判断 str.append(","); //一个对象组装结束 message.toString(); } while (iterator.hasNext()); str.append("]"); return str.toString(); } }