接收XML
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.io.*,org.apache.xerces.parsers.DOMParser,org.w3c.dom.*" %><%
//定义一个StringBuffer对象,用来接收请求参数
StringBuffer sb = new StringBuffer();
String line = null;
//通过request获取输入流
BufferedReader br = request.getReader();
//依次读取输入流的数据
while((line = br.readLine()) != null) {
sb.append(line);
}
//将输入流中的内容转换成字符串
String xml = sb.toString();
//构建DOM解析器
DOMParser dp = new DOMParser();
dp.parse(xml);
//获取文档对象
Document doc = dp.getDocument();
//获取根节点
Element root = doc.getDocumentElement();
//
NodeList nl = root.getElementsByTagName("*");
//定义服务器响应的结果
String result = "";
for (int i=0; i<nl.getLength(); i++) {
Element city = (Element)nl.item(i);
if (city.getNodeValue().equals("1")) {
result += "上海$北京$常州";
} else if (city.getNodeValue().equals("2")) {
result += "$华盛顿$休斯顿$纽约";
} else if (city.getNodeValue().equals("3")) {
result += "$东京$大坂$福冈";
}
}
out.println(result);
%>

解决方案 »

  1.   

    报的错误:
    严重: Servlet.service() for servlet jsp threw exception
    org.xml.sax.SAXParseException: File "<countrys><city>2</city></countrys>" not found.
    at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1202)
    at org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:499)
    at org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:312)
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1080)
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1122)
    at org.apache.jsp.xmlHttpRequest.incerptXml_jsp._jspService(incerptXml_jsp.java:63)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:414)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)
      

  2.   

    对java不熟悉,断点调试在哪里出错,不过最好去java那里去问
      

  3.   

    主要是解析DOM是出的错,还是不太熟练~
      

  4.   


    function createXml() {
                var xml = "<countrys>";
                var ops = document.getElementById("first").childNodes;
                var op;
                for (i=0; i<ops.length; i++) {
                    op = ops[i];
                    //如果某个选项被选中
                    if (op.selected) {
                        var xml = xml + "<city>" + op.value + "<\/city>";
                    }                
                }
                //结束XML根节点
                xml = xml + "<\/countrys>";
                return xml;
            }
            xml=" <countrys> <city>"+ op.value +"</city> </countrys>"
            function send() {
                createXMLHttpRequest();  //初始化
                var url = "incerptXml.jsp";
                xhr.open("POST", url, true);
                xhr.onreadystatechange = processRequest;
                xhr.send(createXml());
            }

             //将输入流中的内容转换成字符串
             String xml = sb.toString();

      

  5.   

    org.xml.sax.SAXParseException:   File   " <countrys> <city> 2 </city> </countrys> "   not   found. 
      

  6.   

    代碼我也沒測試。只是看了一下,錯誤應該是你的File對象沒有獲得正確吧
      

  7.   

    对没有解析正确,我刚才做了下测试用DOM4J做没有任何问题,但用DOM做就有问题了
    sendXml.html这个文件没有问题,就是incerpt.jsp有问题,用DOM如何解析?