如何从文档或节点创建InputStream

Mik*_*one 26 java xml xstream

如何从要在xstream中使用的XML Document或Node对象创建InputStream对象?我需要更换??? 用一些有意义的代码.谢谢.

Document doc = getDocument();
InputStream is = ???;
MyObject obj = (MyObject) xstream.fromXML(is);
Run Code Online (Sandbox Code Playgroud)

Gar*_*art 49

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(doc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget);
InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
Run Code Online (Sandbox Code Playgroud)

  • 第一行使用ByteArrayOUTPUTStream,而最后一行使用ByteArrayINPUTStream.此外,在第一行中声明的outputStream用作StreamResult的参数. (2认同)

小智 5

如果您使用的是没有任何第三方库的Java,则可以InputStream使用以下代码创建:

/*
 * Convert a w3c dom node to a InputStream
 */
private InputStream nodeToInputStream(Node node) throws TransformerException {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    Result outputTarget = new StreamResult(outputStream);
    Transformer t = TransformerFactory.newInstance().newTransformer();
    t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    t.transform(new DOMSource(node), outputTarget);
    return new ByteArrayInputStream(outputStream.toByteArray());
}
Run Code Online (Sandbox Code Playgroud)