2013-02-19 75 views
0

我在Java中的文檔對象,我要救它,所以我有這樣的代碼:Java錯誤保存的xml

TransformerFactory fabTransformador = TransformerFactory.newInstance(); 

Transformer transformador = fabTransformador.newTransformer(); 

Source origin = new DOMSource(documentoXML); 

Result destino = new StreamResult(new java.io.File(nombrearchivo)); 

transformador.transform(origin, destino); 

其中「nombrearchivo」是文件名(file.xml)和documentoXML是Document對象。 當我執行的代碼,我收到作爲輸出:錯誤:'' 我沒有收到任何異常,只是消息錯誤:'' 該文件約爲1,3 GB,我不知道它是問題,在這種情況下,是否有另一種方法來保存文件?

我用的是未來進口:

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Node; 
import javax.xml.parsers.*; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.*; 
import javax.xml.transform.stream.*; 
+4

代碼看起來不錯。你的'catch'塊包含什麼? – VGR 2013-02-19 12:19:10

+3

你有沒有在小文件上測試你的邏輯? – Raman 2013-02-19 12:22:06

+1

你能告訴我們運行代碼的輸出嗎? – 2013-02-19 12:22:22

回答

1

您的代碼看起來不錯,但對於引用有一種替代方法,您可以使用保存DOM文檔:

import org.w3c.dom.ls.*; 
import java.io.FileOutputStream; 

DOMImplementationLS ls = (DOMImplementationLS)documentoXML.getImplementation(); 
LSSerializer ser = ls.createLSSerializer(); 
LSOutput out = ls.createLSOutput(); 
out.setEncoding("UTF-8"); 
FileOutputStream output = new FileOutputStream("output.xml"); 
try { 
    out.setByteStream(output); 
    ser.write(documentoXML, out); 
} finally { 
    output.close(); 
} 
+0

我已經用你的代碼代替了我的代碼,但是它報告給我一個java.net.UnknownHostException:文件 – user2083473 2013-02-19 13:10:04

+0

UnknownHostException通常是由一個文件URL引起的,該文件的URL在方案('file:')後面有兩個斜槓。 'file:'後面必須有一個斜線或三個斜槓。 – VGR 2013-02-19 13:49:41

+0

但我得到out.setSystemId(「output.xml」)的異常;也許我必須編寫整個網址? – user2083473 2013-02-19 15:49:56

0

使用以下,以確定確切原因:

try { 
secure.generaTextoXML(); 
} catch (Trowable thr) { 
thr.printStackTrace(); 
} 

...或嘗試Level.ERROR而不是Level.SEVERE爲您的記錄器:

try { 
secure.generaTextoXML(); 
} catch (TransformerConfigurationException ex) { 
Logger.getLogger(GUI.class.getName()).log(Level.ERROR, null, ex); 
} catch (TransformerException ex) { 
Logger.getLogger(GUI.class.getName()).log(Level.ERROR, null, ex); 
} 
+0

我用你的建議,我得到了javax.xml.transform.TransformerException:java.lang.NegativeArraySizeException \t at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:736)any理念?謝謝 – user2083473 2013-02-19 15:48:10

+0

你能否把整個堆棧跟蹤問題? – Raman 2013-02-19 16:24:12