Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在窗格中显示带有样式表的XML_Java_Xml_Swing_Xslt_Jeditorpane - Fatal编程技术网

Java 在窗格中显示带有样式表的XML

Java 在窗格中显示带有样式表的XML,java,xml,swing,xslt,jeditorpane,Java,Xml,Swing,Xslt,Jeditorpane,我有一个XML文件,它使用存储在文件夹中的XSS和XSL以适当的格式显示XML。 当我使用以下代码时 JEditorPane editor = new JEditorPane(); editor.setBounds(114, 65, 262, 186); frame.getContentPane().add(editor); editor.setContentType( "html" ); File file=new File("c:/r/testResult.xml"); editor.set

我有一个XML文件,它使用存储在文件夹中的XSS和XSL以适当的格式显示XML。 当我使用以下代码时

JEditorPane editor = new JEditorPane();
editor.setBounds(114, 65, 262, 186);
frame.getContentPane().add(editor);
editor.setContentType( "html" );
File file=new File("c:/r/testResult.xml");
editor.setPage(file.toURI().toURL());

我所能看到的只是XML的文本部分,没有任何样式。如何使用样式表显示此内容。

JEditorPane不会自动处理XSLT样式表。您必须自己执行转换:

    try (InputStream xslt = getClass().getResourceAsStream("StyleSheet.xslt");
            InputStream xml = getClass().getResourceAsStream("Document.xml")) {
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = db.parse(xml);

        StringWriter output = new StringWriter();
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer(new StreamSource(xslt));
        transformer.transform(new DOMSource(doc), new StreamResult(output));

        String html = output.toString();

        // JEditorPane doesn't like the META tag...
        html = html.replace("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">", "");
        editor.setContentType("text/html; charset=UTF-8");

        editor.setText(html);
    } catch (IOException | ParserConfigurationException | SAXException | TransformerException e) {
        editor.setText("Unable to format document due to:\n\t" + e);
    }
    editor.setCaretPosition(0);
try(InputStream xslt=getClass().getResourceAsStream(“StyleSheet.xslt”);
InputStream xml=getClass().getResourceAsStream(“Document.xml”)){
DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=db.parse(xml);
StringWriter输出=新建StringWriter();
TransformerFactory tf=TransformerFactory.newInstance();
Transformer Transformer=tf.newTransformer(新StreamSource(xslt));
transform(新的DOMSource(doc)、新的StreamResult(output));
字符串html=output.toString();
//JEditorPane不喜欢META标签。。。
html=html.replace(“,”);
setContentType(“text/html;charset=UTF-8”);
setText(html);
}捕获(IOException | ParserConfiguration异常| SAXException | TransformerException e){
editor.setText(“由于:\n\t”+e而无法格式化文档);
}
编辑器.setCaretPosition(0);
对特定的
xslt
xml
文档使用适当的
InputStream
StreamSource