java - ejemplos - Cómo ''transformar'' un objeto String(que contiene XML) a un elemento en una página JSP existente
programacion en jsp (3)
Actualmente, tengo un objeto String que contiene elementos XML:
String carsInGarage = garage.getCars();
Ahora quiero pasar este String como fuente de entrada / secuencia (o algún tipo de fuente), pero no estoy seguro de cuál elegir y cómo implementarlo.
La mayoría de las soluciones que he analizado importan el paquete: javax.xml.transform y aceptan un archivo XML (stylerXML.xml) y se envían a un archivo HTML (outputFile.html) (Vea el código a continuación).
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();
}
Quiero aceptar un objeto String y salida (usando XSL) a un elemento dentro de una página JSP existente. Simplemente no sé cómo implementar esto, incluso habiendo mirado el código anterior.
¿Alguien puede por favor asesorar / ayudar? He buscado una solución alta y baja, pero no puedo sacar nada.
Esto funcionó para mí.
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);
Si en algún momento desea que la fuente contenga más de una cadena, o no desea generar el elemento contenedor XML de forma manual, cree un documento DOM que contenga su fuente y páselo al transformador utilizando un DOMSource .
Use un StringReader
y un 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();
}