Ответ 1
Передайте OutputStream вместо файла в конструктор StreamResult
.
ByteArrayOutputStream bos=new ByteArrayOutputStream();
StreamResult result=new StreamResult(bos);
transformer.transform(source, result);
byte []array=bos.toByteArray();
Я инициализирую объект Document следующим образом:
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
После этого я создаю XML файл, вставляя данные в объект doc.
Наконец, я пишу содержимое в файл на своем компьютере.
Мой вопрос заключается в том, как написать содержимое документа 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);
Передайте OutputStream вместо файла в конструктор StreamResult
.
ByteArrayOutputStream bos=new ByteArrayOutputStream();
StreamResult result=new StreamResult(bos);
transformer.transform(source, result);
byte []array=bos.toByteArray();
Эта работа для меня:
public byte[] documentToByte(Document document)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.xml.security.utils.XMLUtils.outputDOM(document, baos, true);
return baos.toByteArray();
}
Поместите ByteArrayOutputStream, где у вас есть файл, и вы должны быть хорошими.