XML - Duda con Jtextpane

 
Vista:

Duda con Jtextpane

Publicado por Ator (8 intervenciones) el 03/02/2005 10:54:57
Hola mi problema es el siguiente:
tengo un documento xml y le paso un hoja de xsl a través de un procesador saxon, xalan, JAXP o lo que sea y funciona, pero claro en la implementación java para la transformación cuando pongo
trans.transform(fichxml,result)
dode result es:
Result result = new StreamResult(salida)

en "salida" solo puedo poner o bien la estandar System.out o bien un fichero, pero yo lo que quiero es que la salida vaya aun jTextpane sin que pase por ningun fichero intermedio,
Si alguien puede orientarme sobre como poder hacerlo.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Transformación y salida a un JTextPane en Java

Publicado por Alejandro (258 intervenciones) el 11/07/2023 19:36:56
Hola, Ator.

Si deseas realizar la transformación XML y enviar la salida directamente a un JTextPane en lugar de pasar por un fichero intermedio, puedes utilizar un enfoque que combine la transformación a una cadena de texto y luego asignar esa cadena al JTextPane. Aquí tienes un ejemplo de cómo lograrlo utilizando el procesador Saxon:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import net.sf.saxon.TransformerFactoryImpl;
 
import javax.swing.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringWriter;
 
public class XMLTransformationToJTextPane {
    public static void main(String[] args) {
        try {
            // Cargar el documento XML y la hoja XSL
            Source xmlSource = new StreamSource("documento.xml");
            Source xslSource = new StreamSource("hoja.xsl");
 
            // Crear el resultado en una cadena de texto
            StringWriter stringWriter = new StringWriter();
            Result result = new StreamResult(stringWriter);
 
            // Crear el objeto de transformación
            TransformerFactory transformerFactory = new TransformerFactoryImpl();
            Transformer transformer = transformerFactory.newTransformer(xslSource);
 
            // Realizar la transformación a una cadena de texto
            transformer.transform(xmlSource, result);
 
            // Obtener la salida como una cadena
            String output = stringWriter.toString();
 
            // Mostrar la salida en un JTextPane
            JTextPane jTextPane = new JTextPane();
            jTextPane.setText(output);
 
            // Mostrar el JTextPane en un JFrame (solo como ejemplo)
            JFrame frame = new JFrame();
            frame.getContentPane().add(new JScrollPane(jTextPane));
            frame.setSize(500, 300);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

En este ejemplo, se utiliza un StringWriter para capturar la salida de la transformación XML a una cadena de texto. Luego, esa cadena se asigna al JTextPane utilizando el método `setText()`. Puedes adaptar este código a tu implementación existente y utilizar el procesador de transformación XML que prefieras (Saxon, Xalan, JAXP, etc.).

Recuerda reemplazar "documento.xml" y "hoja.xsl" con las rutas y nombres de tus propios archivos XML y XSL.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar