如何将 xml 转换成 docx?

How to convert xml to docx?

我正在使用 meteor 开发一个应用程序,需要替换 docx 文档中的特定单词。我找到了一种将 docx 文件转换为 xml 的方法,我需要进行的替换发生在 xml 文件中。

问题是,替换xml中的那些词后如何恢复docx文档?

这在很大程度上取决于您用来表示数据的 XML-方言。 docx 格式本身只是 xml 和资源文件的集合,打包在一个 zip 容器中。如果您将文件从 file.docx 重命名为 file.zip,您可以提取它并亲自查看。

让我们快速浏览一下容器中的文件夹结构:

docx | + _rels (...) + docProps (...) + word | + media (...) | + _rels (...) | | - document.xml | - footnotes.xml | - styles.xml | - footer(...).xml | - header(...).xml - [ContentTypes].xml

最重要的文件是 document.xml。这是存储的整个文本和文档结构,以及对脚注(在 footnotes.xml 中定义)、样式(style.xml)和资源(media-文件夹)的引用,header/footer-information 和其他一切。

docx 使用的 XML-方言是:来自 Microsoft 的 Wordprocessing XML (WML)。 XML-方言(根据我的经验)相对复杂且难以正确格式化。

如果您的 XML-文件已经是 WML 格式,那么万岁,您就快完成了。您唯一需要做的就是将 document.xml(或您已编辑的其他资源文件)打包回 zip 容器,或者从提取和处理的容器中创建一个新容器。如果您这样做了,请不要忘记将 .zip 重命名回 .docx

如果您有另一个方言的 XML 文件(例如 docbook;TEI;DITA),那么您必须编写一个从该方言到文字处理的转换器 XML,以创建一个document.xml 和其他资源文件。然后把它打包回去,就像我上面描述的那样。据我所知,没有那种现成的开源转换器。

您可以通过 运行 命令执行此操作 zip -r new-doc-file-name.docx * 您必须位于包含所有 xml 文件和所需文件夹的文件夹中。