Как использовать Java API для синтаксического анализа строки xml с XSLT и генерировать вывод только в памяти?

Мне нужно разобрать внутренний XML (из ответа) с предопределенным XSLT и отправить обратно обработанный результат в html клиенту. Я замечаю следующий пример, чтобы использовать и генерировать локальные файлы. Как избежать создания файла с помощью Java API? Я хочу заменить source.xml на String и генерировать вывод html на лету.

TransformerFactory tFactory = TransformerFactory.newInstance();
 Transformer transformer = tFactory.newTransformer (new javax.xml.transform.stream.StreamSource("searchresult.xslt"));
 transformer.transform(new javax.xml.transform.stream.StreamSource("source.xml"),
 new javax.xml.transform.stream.StreamResult( new FileOutputStream("result.html")));
1 ответ

У StreamSource есть конструктор, принимающий Reader как аргумент. Таким образом, вы можете передать StringReader, который будет читать XML из String, в качестве аргумента.

Аналогично, конструктор StreamResult, используемый в этом примере, принимает аргумент OutputStream. Таким образом, вы можете передавать любой вид OutputStream (например, выходной поток ответа HTTP или ByteArrayOutputStream или выходной поток сокета), чтобы отправить результат туда, где вам нравится.

licensed under cc by-sa 3.0 with attribution.