web-dev-qa-db-ja.com

Stringオブジェクト(XMLを含む)を既存のJSPページの要素に「変換」する方法

現在、XML要素を含むStringオブジェクトがあります。

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オブジェクトを受け入れ、既存のJSPページ内の要素に(XSLを使用して)出力します。上記のコードを見ても、これを実装する方法がわかりません。

誰かが助言/支援してください。私は解決策を求めて高低を検索しましたが、何も引き出す​​ことができません。

23
Lycana

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();
}
57
bruno conde

ある時点でソースに1つ以上の文字列だけを含めたい場合、または手動でXMLラッパー要素を生成したくない場合は、ソースを含むDOMドキュメントを作成し、 DOMSource

0
jelovirt

これでうまくいきました。

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
Teejay