0

我在 java 中有一个 Document 对象,我想保存它,所以我有这个代码:

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

2 回答 2

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();
}
于 2013-02-19T12:33:47.260 回答
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); 
}
于 2013-02-19T13:13:54.153 回答