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.FileLogger
public 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;
}
}