将文档对象转换为字节数组

15

我是这样初始化Document对象的:

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);
3个回答

28

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

 ByteArrayOutputStream bos=new ByteArrayOutputStream();
 StreamResult result=new StreamResult(bos);
 transformer.transform(source, result);
 byte []array=bos.toByteArray();

7
这对我有用:
public byte[] documentToByte(Document document)
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    org.apache.xml.security.utils.XMLUtils.outputDOM(document, baos, true);
    return baos.toByteArray();
}

你有org.apache.xml.security.utils.XMLUtils.outputDOM的依赖细节吗?我只得到了节点支持类文件。 - Gayathri Rajan

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接