webservice中的xml文件的交互

请注意,本文编写于 3635 天前,最后修改于 239 天前,其中某些信息可能已经过时。

  使用webservice中使用的类型可以是好多种,string、element、document等等甚至可以使对象!



  我使用element来传输xml文件,写了一个文件,源码如下



import java.io.Reader;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
/**
 * 工单查询接口 boos提供serialNumber、serviceNum输入参数
 *
 * @author joypen
 *
 */
public class WidebandBusinessQueryService {
	// 提供的查询方法
	public Element queryWideband(Element requestXml) throws Exception {
		Map map = this.databaseMethod(requestXml);
		String responseXml = this.dealResponseXml(map);
		System.out.println("111 "+responseXml);
        Document doc = null;
            Reader strreader=new StringReader(responseXml);
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            doc = builder.parse(new InputSource(strreader));
		return  doc.getDocumentElement();
	}
	// 连接数据库,并且执行sql语句
	private Map databaseMethod(Element requestXml) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Map map = null;
		String serialNumber = null;
		String serviceNum = null;
		try {
			map = this.parseXml(requestXml);
			serialNumber = (String) map.get("SERIALNUMBER");
			serviceNum = (String) map.get("SERVICENUM");
			if(TextUtil.isNull(serialNumber) || "".equals(serialNumber) || TextUtil.isNull(serviceNum) || "".equals(serviceNum)){
				map.put("ERRORCODE", "1");
				map.put("DESCRIPTION", "SERIALNUMBER OR SERVICENUM IS WORING!");
			}else{
				conn = Helper.getDBCnn();
				conn.setAutoCommit(false);
				String sqlString = this.sqlQueryString(serialNumber, serviceNum);
				ps = conn.prepareStatement(sqlString);
				rs = ps.executeQuery();
				map = this.dealResult(rs);
			}
		} catch (Exception e) {
			System.out.print("WidebandBusinessQueryService--数据库连接出错!");
			e.printStackTrace();
		}finally{
			try {
				rs = null;
				ps = null;
				if(conn!=null){
					conn.setAutoCommit(true);
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return map;
	}
	// 拼接sql语句
	private String sqlQueryString(String serialNumber, String serviceNum) {
		StringBuffer sql = new StringBuffer();
		sql.append("select * from t_pbb_open_main where SERIALNUMBER = +serialNumber+ and SERVICE_NUM = +serviceNum+ ");
		return sql.toString();
	}
	// 处理返回的结果集
	private Map dealResult(ResultSet rs) {
		HashMap map = null;
		try {
			map = new HashMap();
			if(rs.next()){
				map.put("ERRORCODE", "0");
				map.put("SERIALNUMBER", rs.getString("SERIALNUMBER"));
				map.put("SERVICENUM", rs.getString("SERVICE_NUM"));
				map.put("FORMNO", rs.getString("FORM_NO"));
				map.put("STATE", rs.getString("PROCESS_STATE"));
				map.put("OPERATORNAME", rs.getString("SERVICE_NUM"));
			}else{
				map.put("ERRORCODE", "1");
				map.put("DESCRIPTION", "WITHOUT THIS RECORD!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return map;
	}
	// 解析xml,得到serialNumber和serviceNum
	private Map parseXml(Element requestXml) throws Exception {
		Map map = new HashMap();
			String serialNumber="";
			Node tmpNode = XPathAPI.selectSingleNode(requestXml, "//SERIALNUMBER");
			if (tmpNode != null)
			{
				Node txtNode = tmpNode.getFirstChild();
				if (txtNode != null)
					serialNumber = txtNode.getNodeValue();
			}
			String serviceNum="";
			tmpNode = XPathAPI.selectSingleNode(requestXml, "//SERVICENUM");
			if (tmpNode != null)
			{
				Node txtNode = tmpNode.getFirstChild();
				if (txtNode != null)
					serviceNum = txtNode.getNodeValue();
			}
			map.put("SERIALNUMBER", serialNumber);
			map.put("SERVICENUM", serviceNum);
		return map;
	}
	// 拼接responseXml
	private String dealResponseXml(Map responseMap) {
		String resultCode = (String) (TextUtil.isNull(responseMap.get("ERRORCODE")) ? "" : responseMap.get("ERRORCODE"));
		String serialNumber = (String) (TextUtil.isNull(responseMap.get("SERIALNUMBER")) ? "" : responseMap.get("SERIALNUMBER"));
		String serviceNum = (String) (TextUtil.isNull(responseMap.get("SERVICENUM")) ? "" : responseMap.get("SERVICENUM"));
		String formNo = (String) (TextUtil.isNull(responseMap.get("FORMNO")) ? "" : responseMap.get("FORMNO"));
		String description = (String) (TextUtil.isNull(responseMap.get("DESCRIPTION")) ? "" : responseMap.get("DESCRIPTION"));
		String time = (String) (TextUtil.isNull(responseMap.get("time")) ? "" : responseMap.get("time"));
		String state = (String) (TextUtil.isNull(responseMap.get("STATE")) ? "" : responseMap.get("STATE"));
		String operatorName = (String) (TextUtil.isNull(responseMap.get("OPERATORNAME")) ? "" : responseMap.get("OPERATORNAME"));
		String operatorPhone = (String) (TextUtil.isNull(responseMap.get("OPERATORPHONE")) ? "" : responseMap.get("OPERATORPHONE"));
		StringBuffer sb = new StringBuffer();
		sb.append("
");
		sb.append("
");
			sb.append(""+resultCode+"
");
			sb.append(""+serialNumber+"
");
			sb.append(""+serviceNum+"
");
			sb.append(""+formNo+"
");
			sb.append("响应时间
");
			sb.append("失败原因
");
				sb.append("
");
					sb.append("当前环节
");
					sb.append("操作人姓名
");
					sb.append("操作人电话
");
				sb.append("
");
		sb.append("
");
		return sb.toString();
	}
	public static void main(String[] args) throws Exception {
		String reqeustXml = "321312陶宏辉请求时间";
		Document doc = null;
        Reader strreader=new StringReader(reqeustXml);
        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        doc = builder.parse(new InputSource(strreader));
		Element responseXml = new WidebandBusinessQueryService().queryWideband(doc.getDocumentElement());
		String testXml = "";
		Node tempNode = XPathAPI.selectSingleNode(responseXml, "//OPERATORNAME");
		if(tempNode!=null){
			Node txtNode = tempNode.getFirstChild();
			if(txtNode!=null){
				testXml = txtNode.getTextContent();
			}
		}
		System.out.println("reqeust: "+reqeustXml);
		System.out.println("testXml: "+testXml);
	}
}
← 上一篇 下一篇 →
Comments

添加新评论