13

我是这样的初始化文档对象:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();

之后,我通过向 doc 对象插入数据来构建 XML 文件。

最后,我将内容写入计算机上的文件。

我的问题是如何将 doc 的内容写入byte[]?*

这就是我将内容写入 XML 文件的方式:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("changeOut.xml"));
// Output to console for testing
// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
4

3 回答 3

27

将OutputStream而不是File传递给StreamResult构造函数。

 ByteArrayOutputStream bos=new ByteArrayOutputStream();
 StreamResult result=new StreamResult(bos);
 transformer.transform(source, result);
 byte []array=bos.toByteArray();
于 2012-08-16T07:49:56.823 回答
7

这对我有用:

public byte[] documentToByte(Document document)
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    org.apache.xml.security.utils.XMLUtils.outputDOM(document, baos, true);
    return baos.toByteArray();
}
于 2013-05-08T14:34:19.653 回答
2

ByteArrayOutputStream放在你有文件的地方,你应该很好。

于 2012-08-16T07:49:18.827 回答