2012-11-18 60 views
0

這似乎是愚蠢的問..我對jdbc非常陌生,並試圖按照教程。本教程試圖將XML數據存儲爲由'mapping.xml'提供的解析形式。下面是示例代碼:使用jdbc將數據導出到xml文檔

public static void main (String args[]) { 
    Document mapping = null; 
    Document dataDoc = null; 
    Document newDoc = null; 
     try { 

      DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docbuilder = dbfactory.newDocumentBuilder(); 
      mapping = docbuilder.parse("mapping.xml"); 
      dataDoc = docbuilder.newDocument(); 

      //Instantiate the new Document 
      newDoc = docbuilder.newDocument(); 
     } catch (Exception e) { 
      System.out.println("Errors with creating document: "+e.getMessage()); 
     } 

然而,通過代碼運行後,將創建沒有新的XML文檔,既沒有異常被捕獲。誰能幫我嗎?

謝謝!

+0

你的代碼做了兩件事:解析現有的'mapping.xml'文件並在內存中創建新的XML文檔(DOM對象)。無論是從JDBC讀取或存儲任何文件都不存在以上... –

+0

你好Tomasz,我已經更新了代碼區域的所有信息,除了jdbc連接部分。謝謝! – zoe

回答

1

你是不是真的存儲任何XML文檔在這裏,你幾乎在內存中創建XML文檔的DOM表示。爲了實際存儲文件,你需要下面的代碼片段:

TransformerFactory factory = TransformerFactory.newInstance(); 
Transformer transformer = factory.newTransformer(); 
Result result = new StreamResult(new File("output.xml")); 
Source source = new DOMSource(dataDoc); 
transformer.transform(source, result); 

第3行是至關重要的。

BTW叫其他人檢查你的代碼:

  • 方法實在是太漫長
  • Uou不處理異常正確
  • DOM可能不適合導出大量數據
  • 的最佳選擇
+0

感謝Tomasz!我添加了上面的代碼,但從第3行得到了一個錯誤信息 - 類型不匹配:無法從StreamResult轉換爲DirStateFactory.Result你知道如何解決這個問題嗎? – zoe

+0

@zoe:我只能猜測,將第三行更改爲:'javax.xml.transform.Result result ='... - 將有所幫助。 –

相關問題