transformer.transform不能与URL一起使用?

时间:2014-05-12 16:55:25

标签: java xml servlets

所以我试图运行一个Web应用程序,它从HTML表单获取用户输入,并使用Java Servlets将其附加到服务器上的XML文档。

以下是我获取XML文件并进行修改的方法。

@Override
public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
{
     try {
          String urlpath = "http://192.168.11.9:8080/Chat-sort-of/Messages.xml";
          DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
          DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
          URL url = new URL(urlpath);
          HttpURLConnection urlc = (HttpURLConnection) url.openConnection();

          urlc.setDoInput(true);
          urlc.setDoOutput(true);
          urlc.setUseCaches(false);
          urlc.setRequestMethod("GET");
          urlc.setRequestProperty("Content-Type", "application / xml");

          Document doc = docBuilder.parse(urlc.getInputStream());
          Node m = doc.getElementsByTagName("messages").item(0);
          Element messageNode = doc.createElement("message");
          testMessage = request.getParameter("message-box");
          if(testMessage == null) {response.sendRedirect("http://192.168.11.9:8080/Chat-sort-of/index.html");}
          messageNode.appendChild(doc.createTextNode(testMessage));
          m.appendChild(messageNode);

以下是我写入XML文件的方式:

if(urlc.getResponseCode() == 200) {
              urlc = (HttpURLConnection) url.openConnection();
              urlc.setDoOutput(true);
              urlc.setUseCaches(false);
              urlc.setRequestMethod("POST");
              urlc.setRequestProperty("Content-Type", "application / xml");

              TransformerFactory transformerFactory = TransformerFactory.newInstance();
              transformerFactory.setAttribute("indent-number", 2);
              Transformer transformer = transformerFactory.newTransformer();
              DOMSource source = new DOMSource(doc);
              StreamResult result = new StreamResult(urlc.getOutputStream());
              transformer.setOutputProperty(OutputKeys.INDENT, "yes");
              transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"");
              transformer.setOutputProperty(OutputKeys.METHOD, "xml");                
              transformer.transform(source, result);
          }
      }catch (ParserConfigurationException pce) {
            pce.printStackTrace();
       } catch (TransformerException tfe) {
        tfe.printStackTrace();
       } catch (IOException ioe) {
        ioe.printStackTrace();
       } catch (SAXException sae) {
        sae.printStackTrace();
       }
      response.sendRedirect("http://192.168.11.9:8080/Chat-sort-of/index.html");
}

编译期间没有错误。

如果我在transformer.transform函数中用System.out替换变量“result”,程序会正确打印XML文件并进行修改,这意味着源不为空。

我知道这不是最好的方法,但我现在不会采取任何其他方式。

有什么想法吗?

0 个答案:

没有答案