【发布时间】:2017-05-30 21:55:30
【问题描述】:
我正在尝试创建一个应用程序,在该应用程序中,我将 XML 格式的文本写入 TextArea 并应用缩进转换(使用 XSLT),最终将其显示在 out TextArea 中。
但我只收到图像中的 XML 元素的内容:
我的 Java 代码如下:
public class Vista extends Application{
Label LIn;
TextArea TIn;
Label LOut;
TextArea TOut;
Button BTransform;
String xslt = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"> " +
"<xsl:output method=\"xml\" version=\"1.0\" encoding=\"UTF-8\" indent=\"yes\"/> " +
"<xsl:copy-of select=\".\"/> " +
"</xsl:stylesheet>";
@Override
public void start(Stage StageInicial) throws Exception {
StageInicial.setTitle("XML Indent");
LIn = new Label("XML Entrada:");
TIn = new TextArea();
LOut = new Label("XML Salida:");
TOut = new TextArea();
BTransform = new Button("Indent XML!");
BTransform.setOnAction(action -> {
try {
transformation();
} catch (TransformerException e) {
e.printStackTrace();
}
});
GridPane gridPane = new GridPane();
gridPane.add(LIn, 0, 0);
gridPane.add(TIn, 0, 1);
gridPane.add(LOut, 1, 0);
gridPane.add(TOut, 1, 1);
gridPane.add(BTransform, 0, 3, 2, 2);
gridPane.setHgap(10);
gridPane.setVgap(10);
Scene scene = new Scene(gridPane, 1048, 720);
StageInicial.setScene(scene);
StageInicial.show();
}
public void transformation() throws TransformerException{
StringReader reader = new StringReader(TIn.getText());
StringReader readerXSLT = new StringReader(xslt);
StringWriter writer = new StringWriter();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new javax.xml.transform.stream.StreamSource(readerXSLT));
transformer.transform(
new javax.xml.transform.stream.StreamSource(reader),
new javax.xml.transform.stream.StreamResult(writer));
TOut.setText(writer.toString());
}
}
我做错了吗?我该如何解决?
提前致谢。
【问题讨论】: