4

我一直在尝试将我的 docX 文件转换为我定制的 XML。我的用户希望将他们的数据转换为此 XML 以便在他们的 Web 应用程序中进行内容查询,并且他们希望输入来自他们的 docX。

我曾尝试在 Java 中寻找转换器 API,但似乎没有一个符合我的要求。我查看了 docx4j,但意识到它只能转换为 HTML 和 PDF。我在想是否存在一个转换器 API,我可以输入一个中间转换器 (XSLT),输出将是我的自定义 XML,其中包含来自我的 docX 的数据。

有现成的工具吗?如果没有,关于我在编写自己的转换器时必须采用的方法的任何建议,例如从 openXML,在自定义 XML 之前先转换为 XSL-FO?

很想听听社区的意见。

非常感谢。

4

3 回答 3

3

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

于 2011-05-01T01:33:42.050 回答
1

据我所知,docx 文件只是 ZIP 容器中的 xml 文件。要将这些转换为您设计的某些 XML 格式,您需要解压缩文件(到新文件夹或内存中),加载目标 Xml 文档,并将 XSLT 应用到该 xml 文件。除了“docx4j”标签之外,我认为您没有提及任何有关您的开发环境的内容。您是否使用 Java 进行开发?如果是这样,恐怕我不知道为 zip-handling 和 xml-transformation 库指向哪些库(尽管我知道它们存在,而且只需 5 分钟的谷歌搜索即可找到它们! )

要查看 docx 中的 xml 文件,只需将文件的扩展名从“.docx”更改为“.zip”,然后在您最喜欢的 ZIP 存档工具中打开。

于 2011-04-29T14:00:04.290 回答
0

我最幸运的是直接从 Word 中将 docx 保存为 html。Html 不是 xHtml,因此您需要对其进行整理。否则,如果您必须使用基于 Word 的工作流程,它会运行得相当好。您也可以编写一个 VBA 脚本让 Word 打开一个文件并以编程方式将其保存为 Html。

于 2011-04-29T15:28:49.723 回答