現在、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を使用して)出力します。上記のコードを見ても、これを実装する方法がわかりません。
誰かが助言/支援してください。私は解決策を求めて高低を検索しましたが、何も引き出すことができません。
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();
}
ある時点でソースに1つ以上の文字列だけを含めたい場合、または手動でXMLラッパー要素を生成したくない場合は、ソースを含むDOMドキュメントを作成し、 DOMSource 。
これでうまくいきました。
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);