docx4j可用于通过XSLT将OpenXML转换为任意XML.
假设模板xslt和javax.xml.transform.stream.StreamResult结果,你会做这样的事情:
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
// DOM document to input to transform
org.w3c.dom.Document doc = XmlUtils.marshaltoW3CDomDocument(
mdp.getJaxbElement() );
XmlUtils.transform(doc,xslt,null,result);
但是,如果你想要做的就是转换为XML,那么docx4j(以及Apache POI就此而言)是过度的.你可以直接使用OpenXML4J.
是否通过XSLT进行转换是最好的方法,取决于您的目标XML是面向文档还是面向数据.
如果它是面向文档的,那么XSLT是一种很好的方法.
如果它是面向数据的,您可能需要考虑内容控制数据绑定. (还有另一种方法,称为customxml,但如果您依赖Word进行编辑,i4i专利闹剧可能会使这种方法不可取)