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 专利闹剧可能会使这种方法变得不可取)