接收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; } }