接收POST数据,解析XML
来源:互联网 发布:淘宝体检中心登陆网站 编辑:程序博客网 时间:2024/05/18 01:23
package org.eclipsebook.ch09;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;import org.dom4j.Element;import org.dom4j.DocumentHelper;import org.dom4j.Node;import org.dom4j.Attribute;import org.dom4j.xpath.*;/*import org.dom4j.io.XMLWriter;*/import java.util.List;import java.util.Iterator;import java.io.*;import javax.xml.parsers.*;import javax.servlet.*;import javax.servlet.http.*;//org.apache.catalina.logger.FileLoggerpublic class RevXml extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response ) throws IOException , ServletException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response ) throws IOException , ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String XmlContent = null; try { XmlContent = getDoc(request); XmlContent = XmlContent.replace("xmlns=\"http://www.monternet.com/dsmp/schemas/\"",""); Document document = DocumentHelper.parseText(XmlContent); // List childNodes = document.selectNodes("//SOAP-ENV:Envelope/SOAP-ENV:Header"); Node nodeHead = document.selectSingleNode("//SOAP-ENV:Envelope/SOAP-ENV:Header/TransactionID"); out.println(nodeHead.getText()); out.println("ok"); Node nodeBody = document.selectSingleNode("//SOAP-ENV:Envelope/SOAP-ENV:Body/SyncOrderRelationReq/Send_Address/DeviceID"); if ( nodeBody != null ) out.println(nodeBody.getText()); Element root = document.getRootElement(); for ( Iterator i = root.elementIterator(); i.hasNext(); ) { Element element = ( Element ) i.next(); out.println(element.getPath()); out.println("<br>"); for ( int j = 0; j < element.nodeCount(); j++ ) { Node node = element.node(j); if (node instanceof Element) { out.print(node.getUniquePath()); out.print(j); out.print("--"); out.print(node.getText()); out.print("--"); out.println(node.getName()); out.println("<br>"); } } } } catch (Exception e) { e.printStackTrace(); } } // 获取post数据 public Document getPostDoc(HttpServletRequest request) throws IOException, DocumentException { SAXReader xmlReader = new SAXReader(); InputStream in; Document document = null; in = request.getInputStream(); document = xmlReader.read(in); return document; } public String getDoc(HttpServletRequest request) throws Exception { char[] readerBuffer = new char[request.getContentLength()]; BufferedReader bufferedReader = request.getReader(); //Logger.info("开始处理上传数据"); int portion = bufferedReader.read(readerBuffer); int amount = portion; while (amount < readerBuffer.length) { portion = bufferedReader.read(readerBuffer, amount, readerBuffer.length - amount); amount = amount + portion; } StringBuffer stringBuffer = new StringBuffer( (int) (readerBuffer.length * 1.5) ); for (int index = 0; index < readerBuffer.length; index++) { char c = readerBuffer[index]; stringBuffer.append(c); } String xml = stringBuffer.toString(); //logger.info(xml); return xml; } }