⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlwriter.java

📁 为公司做的质量考核接口源码,用spring,hibernate,XML实现,对XML接口编程很有帮助
💻 JAVA
字号:
package com.jr81.source.xml;

import java.sql.*;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.jdom.Element;

public class XMLWriter {
	/**
	 * @param ResultSet
	 *            rs输入的结果集
	 * @return String 返回XML串
	 * @exception SQLException
	 */
	public String generateXML(final ResultSet rs,LinkedHashMap params) throws SQLException {

		final StringBuffer buffer = new StringBuffer(1024 * 4);
		if (rs == null)
			return "";
		if (!rs.next())
			return "";
		buffer.append("<?xml   version=\"1.0\"   encoding=\"gb2312\"?>\n"); // XML的头部信息
		buffer.append("<GZJRDP Version=\"1.0\">\n");
		buffer.append(" <opRep>\n");
		buffer.append("  <opResultSet>\n");
		buffer.append("   <opResult>\n");
		ResultSetMetaData rsmd = rs.getMetaData(); // 得到结果集的定义结构
		int colCount = rsmd.getColumnCount(); // 得到列的总数
		rs.beforeFirst();
		for (int id = 0; rs.next(); id++) { // 对放回的全部数据逐一处理
			// 格式为row id , col name, col context
			buffer.append("\t<row   id=\"").append(id).append("\">\n");
			for (int i = 1; i <= colCount; i++) {
				int type = rsmd.getColumnType(i); // 获取字段类型
				buffer.append("\t\t<col   name=\"" + rsmd.getColumnName(i)
						+ "\">");
				buffer.append(getValue(rs, i, type));
				buffer.append("</col>\n");
			}
			buffer.append("\t</row>\n");
		}
		buffer.append("   </opResult>\n");
		buffer.append("  </opResultSet>\n");
		
		///add by sanlen 
		if (params!=null){
			Iterator i=params.entrySet().iterator();
			while(i.hasNext()) {
				Map.Entry entry=(Map.Entry)i.next();
				buffer.append("<"+entry.getKey()+">"+params.get(entry.getKey())+"</"+entry.getKey()+">");
			}			
		}
		
		buffer.append(" </opRep>\n");
		buffer.append("</GZJRDP>");
		rs.close();
		return buffer.toString();
	}

		
	public String generateXML(LinkedHashMap params) throws SQLException {

		final StringBuffer buffer = new StringBuffer(1024 * 4);
		buffer.append("<?xml   version=\"1.0\"   encoding=\"gb2312\"?>\n"); // XML的头部信息
		buffer.append("<GZJRDP Version=\"1.0\">\n");
		buffer.append(" <opRep>\n");
		buffer.append("  <opResultSet>\n");
		buffer.append("   <opResult>\n");		
		
		///add by sanlen 
		if (params!=null){
			Iterator i=params.entrySet().iterator();
			while(i.hasNext()) {
				Map.Entry entry=(Map.Entry)i.next();
				buffer.append("<"+entry.getKey()+">"+params.get(entry.getKey())+"</"+entry.getKey()+">");
			}			
		}		
		buffer.append(" </opRep>\n");
		buffer.append("</GZJRDP>");
		return buffer.toString();
	}

		
	public String generateXML(final ResultSet rs, int DataType)
			throws SQLException {

		final StringBuffer buffer = new StringBuffer(1024 * 4);
		if (rs == null)
			return "";
		if (!rs.next())
			return "";
		//TcuColumnNameConvert convert = new TcuColumnNameConvert(DataType);
		buffer.append("<?xml   version=\"1.0\"   encoding=\"gb2312\"?>\n"); // XML的头部信息
		buffer.append("<GZJRDP Version=\"1.0\">\n");
		buffer.append(" <opRep>\n");
		buffer.append("  <opResultSet>\n");
		buffer.append("   <opResult>\n");
		ResultSetMetaData rsmd = rs.getMetaData(); // 得到结果集的定义结构
		int colCount = rsmd.getColumnCount(); // 得到列的总数
		rs.beforeFirst();
		for (int id = 0; rs.next(); id++) { // 对放回的全部数据逐一处理
			// 格式为row id , col name, col context
			buffer.append("\t<row   id=\"").append(id).append("\">\n");
			for (int i = 1; i <= colCount; i++) {
				int type = rsmd.getColumnType(i); // 获取字段类型
				buffer.append("\t\t<col   name=\""
						+ rsmd.getColumnName(i) + "\">");
				buffer.append(getValue(rs, i, type));
				buffer.append("</col>\n");
			}
			buffer.append("\t</row>\n");
		}
		buffer.append("   </opResult>\n");
		buffer.append("  </opResultSet>\n");
		buffer.append(" </opRep>\n");
		buffer.append("</GZJRDP>");
		rs.close();
		return buffer.toString();
	}

	public String generateXML(Element root) throws Exception {

			final StringBuffer buffer = new StringBuffer(1024 * 4);
			Element opReq = root.getChild("opReq");
			Element opName = opReq.getChild("opName");
			Element ReqParam = opReq.getChild("ReqParam");
			buffer.append("<?xml   version=\"1.0\"   encoding=\"gb2312\"?>\n"); // XML的头部信息
			buffer.append("<GZJRDP Version=\"1.0\">\n");
			buffer.append(" <opName>");
			buffer.append(opName.getText());
			buffer.append(" </opName>\n");
			buffer.append(" <opReq>\n");
			buffer.append("   <ReqParam>\n");

			Element row = ReqParam.getChild("row");
			int RowCount = ReqParam.getChildren().size();

			List list = row.getChildren();
			for (int id = 0; id < RowCount; id++) {

				buffer.append("\t<row   id=\"").append(id).append("\">\n");
				for (Iterator iter = list.iterator(); iter.hasNext();) {
					Element element = (Element) iter.next();
					buffer.append("\t\t<col   name=\""
							+ element.getAttributeValue("name") + "\">");
					buffer.append(element.getText());
					buffer.append("</col>\n");
				}

				buffer.append("\t</row>\n");
			}
			buffer.append("   </ReqParam>\n");
			buffer.append(" </opReq>\n");
			buffer.append("</GZJRDP>");
			return buffer.toString();


	}

	/**
	 * This method gets the value of the specified column
	 * 通用的读取结果集某一列的值并转化为String表达
	 * 
	 * @param ResultSet
	 *            rs 输入的纪录集
	 * @param int
	 *            colNum 第几列
	 * @param int
	 *            type 数据类型
	 */
	private String getValue(final ResultSet rs, int colNum, int type)
			throws SQLException {
		switch (type) {
		case Types.ARRAY:
		case Types.BLOB:
		case Types.CLOB:
		case Types.DISTINCT:
		case Types.LONGVARBINARY:
		case Types.VARBINARY:
		case Types.BINARY:
		case Types.REF:
		case Types.STRUCT:
			return "undefined";
		default: {
			Object value = rs.getObject(colNum);
			if (rs.wasNull() || (value == null))
				return ("null");
			else
				return (value.toString());
		}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -