如何使用 Java 将 xml 样式的工作表包含在 XML 文件中



我想使用 Java 将 xml 样式的工作表添加到第二行的 XML 文件中。我在这里发现了几乎这样的帖子 堆栈溢出:添加 xml 样式表并独立获取 = 是的,但它在我的 xml 文件的末尾附加样式表。

我可以在我的XML文件的第二行包含(添加)吗?请建议我。

这是在 xml 字符串的分隔行添加 xml 样式表的完整测试代码。 您只需复制代码并运行它。

public static void main(String[] args)
        throws TransformerConfigurationException {
    String xmlstring = null;
    String filepath = "E:/C-CDA/MU2_CDA_WORKSPACE/AddingStylesheetTOxml/documentfile.txt";
    final String xmlStr = "<?xml version="1.0" encoding="UTF-8" standalone="yes"?>n"
            + "<Emp id="1"><name>Pankaj</name><age>25</age>n"
            + "<role>Developer</role><gen>Male</gen></Emp>";
    Document doc2 = convertStringToDocument(xmlStr);
    Document doc1 = null;
    try {
        doc1 = addingStylesheet(doc2);
    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String str = convertDocumentToString(doc1);
    System.out.println(str);
}
private static <ProcessingInstructionImpl> Document addingStylesheet(
        Document doc) throws TransformerConfigurationException,
        ParserConfigurationException {
    ProcessingInstructionImpl pi = (ProcessingInstructionImpl) doc
            .createProcessingInstruction("xml-stylesheet",
                    "type="text/xsl" href="mystylesheet.xsl"");
    Element root = doc.getDocumentElement();
    doc.insertBefore((Node) pi, root);

    //trans.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(bout, "utf-8")));
    return doc;
}
private static String convertDocumentToString(Document doc) {
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer;
    try {
        transformer = tf.newTransformer();
        // below code to remove XML declaration
        // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
        // "yes");
        StringWriter writer = new StringWriter();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
        transformer.transform(new DOMSource(doc), new StreamResult(writer));
        String output = writer.getBuffer().toString();
        return output;
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    return null;
}
private static Document convertStringToDocument(String xmlStr) {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    Document doc = null;
    try {
        builder = factory.newDocumentBuilder();
        doc = builder.parse(new InputSource(new StringReader(xmlStr)));
    } catch (Exception e) {
        e.printStackTrace();
    }
    return doc;
}

相关内容

  • 没有找到相关文章

最新更新