我有一个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();
}
如何将XSLT转换应用于XML文档,然后获取新文档的根节点?
请注意,我不想要将生成的xml树写入磁盘。
答案 0 :(得分:2)
您可以将DOMSource
转换为DOMResult
,请参阅http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/dom/DOMResult.html。请注意,XSLT / XPath使用名称空间对XML进行操作,以确保使用可识别名称空间的文档构建器工厂。
答案 1 :(得分: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);
从这里采取: Transforming an XML File with XSL into a DOM Document