Как «преобразовать» объект String (содержащий XML) в элемент на существующей странице JSP - PullRequest
23 голосов
/ 12 мая 2009

В настоящее время у меня есть объект String, который содержит элементы XML:

String carsInGarage = garage.getCars();

Теперь я хочу передать эту строку как источник ввода / потока (или какой-либо источник), но не уверен, какой из них выбрать и как его реализовать.

Большинство решений, которые я рассмотрел, импортируют пакет: javax.xml.transform и принимают файл XML (stylerXML.xml) и выводят его в файл HTML (outputFile.html) (см. Код ниже).

try 
{
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer(new StreamSource("styler.xsl"));

    transformer.transform(new StreamSource("stylerXML.xml"), new StreamResult(new FileOutputStream("outputFile.html")));
}
catch (Exception e)
{
    e.printStackTrace();
}

Я хочу принять объект String и вывести (используя XSL) элемент в существующей странице JSP. Я просто не знаю, как это реализовать, даже посмотрев на код выше.

Может кто-нибудь посоветовать / помочь. Я искал решение проблемы все выше и ниже, но ничего не могу вытащить.

Ответы [ 3 ]

57 голосов
/ 12 мая 2009

Используйте StringReader и StringWriter:

try {
    StringReader reader = new StringReader("<xml>blabla</xml>");
    StringWriter writer = new StringWriter();
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer(
            new javax.xml.transform.stream.StreamSource("styler.xsl"));

    transformer.transform(
            new javax.xml.transform.stream.StreamSource(reader), 
            new javax.xml.transform.stream.StreamResult(writer));

    String result = writer.toString();
} catch (Exception e) {
    e.printStackTrace();
}
0 голосов
/ 19 января 2018

Это сработало для меня.

String str = "<my>xml</my>"    
StreamSource src = new StreamSource(new StringReader(str));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Result res = new StreamResult(baos);
transformer.transform(src, res);
0 голосов
/ 12 мая 2009

Если в какой-то момент вы хотите, чтобы источник содержал больше, чем одну строку, или вы не хотите генерировать элемент-оболочку XML вручную, создайте документ DOM, содержащий ваш источник, и передайте его преобразователю, используя DOMSource .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...