Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析servlet生成的XML_Java_Xml_Parsing_Servlets_Xml Parsing - Fatal编程技术网

Java 如何解析servlet生成的XML

Java 如何解析servlet生成的XML,java,xml,parsing,servlets,xml-parsing,Java,Xml,Parsing,Servlets,Xml Parsing,这是我的简单Java servlet,它生成XML代码,从一个简单的数据库检索它: import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax

这是我的简单Java servlet,它生成XML代码,从一个简单的数据库检索它:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.io.*

@WebServlet("/XML")
public class XML extends HttpServlet {
   private static final long serialVersionUID = 1L;

    public XML() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Connection connection;
    Statement statement;

    response.setContentType("application/xml");
    PrintWriter printwriter = response.getWriter();

    printwriter.println("<?xml version=\"1.0\"?>");
    printwriter.println("<document>");

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/AppDB", "***", "****");

        statement = connection.createStatement();

        String SQL = "SELECT first_name, last_name FROM contacts";
        ResultSet resultset = statement.executeQuery(SQL);

        while(resultset.next()) {
            printwriter.println("<first> " +  resultset.getString("first_name") + " </first>");
            printwriter.println("<last> " +  resultset.getString("last_name") + " </last>");
        }
        resultset.close();
        statement.close();
        connection.close();
    }
    catch (Exception e) {
    }
    printwriter.println("</document>");
    printwriter.close();
}

}
谁能帮我解决这个问题给我一些建议吗?
有人知道做同样事情的可能替代方法吗?那么JQuery或Ajax呢?(即使我只是读了一些关于它的东西,但我并不十分了解它们)

在POST或GET之间选择

获取=>像那样使用docBuilder.parse,并在应用程序中编写doGet

您可以直接重定向到doPost

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost (request,response);
}
POST=>不要更改servlet,而是更改客户端

1。带有URL的docBuilder也可以这样工作,但默认情况下使用GET:

Document doc = docBuilder.parse(new URL("http://localhost:8080/Example/XML").openStream());
请注意:

2。因此,请更改为POST

使用

但是要注意:如果你想传递数据,你必须先输入:

OutputStream out = connection.getOutputStream();
out.write(parameters and data here);
out.close(); 
请注意:


如果XML是一个目录而不是.XML文件,请将完整路径传递给您试图解析的XML文件。您已经在doPost()方法中编写了XML生成。如果只想通过传递URL获得xml响应,请尝试doGet()中的实现method@Prabhakaran谢谢!完美的解决方案!
URL url = new URL("http://localhost:8080/Example/XML");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
InputStream is= connection.getInputStream();
Document doc = docBuilder.parse(is);
OutputStream out = connection.getOutputStream();
out.write(parameters and data here);
out.close();