目前,我有一个包含XML元素的String对象:
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页面中的元素。我只是不知道如何实现这一点,即使查看了上面的代码。
有人可以提供建议/协助。我已经搜索了高低解决方案,但我无法取出任何东西。
答案 0 :(得分:57)
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 :(得分:0)
如果在某些时候您希望源包含的不仅仅是一个字符串,或者您不想手动生成XML包装器元素,请创建一个包含源的DOM文档,并使用一个源将其传递给转换器。 DOMSource
答案 2 :(得分:0)
这对我有用。
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);