是否有替代XSLT的

时间:2015-07-08 10:32:06

标签: java xml xslt

在我的应用程序中,我们使用两个步骤将xml转换为java对象。在第一步中,我们使用XSLT进行XML到XML的转换。在第二步中,我们使用JIBX API将XML绑定到Java Object。

Step1:
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(inboundMessageData.getDataStream());
InputStream inStream = XsltTransformationUtil.transform(doc, xsltFileName);

Step2:
RuntimeDocument document = xmlBindingService.unmarshall(inStream, RuntimeDocument.class);

有可能,这两个步骤可以在单个步骤中实现,或者我们是否可以使用任何API。在此先感谢。

1 个答案:

答案 0 :(得分:0)

如果您的Java(域)模型与输入文档不一致,我强烈建议您使用XSLT。但是,可以使用标准java一步完成此操作并提高效率。 请参阅JAXBResult Javadoc

示例代码(使用Java SE 6 +):

/**
 * Read file `./29238845.xml`, transform it to our internal canonical ProductXML and
 * bind to to a Java `Product` domain instance.
 */
@Test
public void testUnmarshal() throws TransformerException, JAXBException {
    final TransformerFactory factory = TransformerFactory.newInstance();
    final Transformer t = factory.newTransformer(
        new StreamSource(new File("./product.xsl")));
    final JAXBContext context = JAXBContext.newInstance(Product.class);
    final JAXBResult result = new JAXBResult(context);
    t.transform(new StreamSource(new File("./29238845.xml")), result);
    final Product p = (Product)result.getResult();
    assertEquals("N3V96EA", p.getMpn());
}