2

我有一个 XML 文档,我将在 Java 应用程序中处理它。但是,我需要使用 XSLT 文件对其进行转换,以便之后进行处理。

这就是我目前加载 XML 文件的方式。

    DocumentBuilderFactory factory;
    DocumentBuilder docbuilder;
    Document doc;
    Element root;

    factory = DocumentBuilderFactory.newInstance();
    try
    {
        // open up the xml document
        docbuilder = factory.newDocumentBuilder();
        doc = docbuilder.parse(new FileInputStream(m_strFileName));

        // get the document type
        doctype = doc.getDoctype();
        strDTD = doctype.getPublicId();

        // get the root of the document
        root = doc.getDocumentElement();
        // get the list of child nodes
        nodes = root.getChildNodes();
        // now process each node
        ...
    }
    catch(ParserConfigurationException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch(SAXException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如何对 XML 文档应用 XSLT 转换,然后获取新文档的根节点?

请注意,我不想将生成的 xml 树写入磁盘。

4

2 回答 2

2

您可以将 a 转换DOMSource为 a DOMResult,请参阅http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/dom/DOMResult.html。请注意,XSLT/XPath 对带有名称空间的 XML 进行操作,以确保您使用可识别名称空间的文档构建器工厂。

于 2013-07-05T11:39:27.430 回答
2

在做了一些长期的研究之后......终于找到了可以接受的解决方案(至少对我来说)。

这是我能够成功适应的示例:

TransformerFactory factory = TransformerFactory.newInstance();
Templates template = factory.newTemplates(new StreamSource(new FileInputStream("xsl.xlt")));
Transformer xformer = template.newTransformer();
Source source = new StreamSource(new FileInputStream("in.xml"));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Result result = new DOMResult(doc);
xformer.transform(source, result);

取自这里: 使用 XSL 将 XML 文件转换为 DOM 文档

于 2013-07-05T12:09:27.267 回答