2017-01-13 14 views
0

私は、結果上にXMl全体(<HTML><BODY><item>a</item>...</HTML>など)を取得しようとしています。このコードを実行すると、Webページに[#document: null]が返されます。XMLファイル全体を取得しようとしています。 [#document:null] error

[#document: null]を検索したところ、エラーではないという回答が見つかりました。しかし、私は結果を見ることができませんでした。

次のような結果が表示されます。

正常に処理されたかどうかをどのように確認できますか?

私はEclipseが初めてです。基本的な質問を申し訳ありません! enter image description here

package web.component; 

    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.PrintWriter; 
    import java.net.URL; 
    import java.net.URLConnection; 

    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 javax.xml.parsers.DocumentBuilder; 
    import javax.xml.parsers.DocumentBuilderFactory; 

    import org.w3c.dom.Document; 
    import org.w3c.dom.NodeList; 

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

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

     //response.setContentType(""); 
     URL url = new URL("url"); 
      URLConnection connection = url.openConnection();  

      Document doc; 
      try { 
       doc = parseXML(connection.getInputStream()); 
       response.setCharacterEncoding("UTF-8"); 
        PrintWriter out = response.getWriter(); 
        out.print(doc.toString()); 
        out.close(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 
    private Document parseXML(InputStream stream) throws Exception{ 

      DocumentBuilderFactory objDocumentBuilderFactory = null; 
      DocumentBuilder objDocumentBuilder = null; 
      Document doc = null; 

      try{ 

       objDocumentBuilderFactory = DocumentBuilderFactory.newInstance(); 
       objDocumentBuilder = objDocumentBuilderFactory.newDocumentBuilder(); 

       doc = objDocumentBuilder.parse(stream); 

      }catch(Exception ex){ 
       throw ex; 
      }  

      return doc; 
     }  
} 

答えて

1

doc.toString()[]との文字列を返すためです。ドキュメントのtoString()メソッドは、XML形式に変換しません。あなたがいることを行い、いくつかのコードが必要になります戻ってそのXMLへDocument変換するには:

public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException { 
    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer transformer = tf.newTransformer(); 
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); 
    transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
    transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); 

    transformer.transform(new DOMSource(doc), 
     new StreamResult(new OutputStreamWriter(out, "UTF-8"))); 
} 

はその後、ドキュメント出力にそれを呼び出します。それは今働いている

try { 
    doc = parseXML(connection.getInputStream()); 
    response.setCharacterEncoding("UTF-8"); 

    // OLD CODE 
    // PrintWriter out = response.getWriter(); 
    // out.print(doc.toString()); 
    // out.close(); 

    // NEW CODE 
    printDocument(doc, response.getOutputStream()); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

感謝:) –

関連する問題