在我的应用程序中,我们使用两个步骤将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。在此先感谢。
答案 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());
}