Подтвердить что ты не робот

Как преобразовать объект String (содержащий XML) в элемент на существующей странице JSP

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

String carsInGarage = garage.getCars();

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

Большинство решений, которые я рассмотрел, импортируют пакет: 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. Я просто не знаю, как это реализовать, даже посмотрев на код выше.

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

4b9b3361

Ответ 1

Используйте 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();
}

Ответ 2

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

Ответ 3

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

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);