我收到带有指定格式的word文档,这些格式对应于其中的数据。例如,所有标题都具有完全相同的格式(Times New Roman-Font 14-Bold)。
将此类MS Word文档(.doc或.docx)处理成xml文档的最佳方法是什么?语言不是问题(如果必须,我将使用Lisp / Boost.Spirit。)。
答案 0 :(得分:8)
查看python-docx库。
答案 1 :(得分:2)
所以我认为你说文档的结构是按格式编码的,你想生成捕获该结构的XML文件,同时保留纯文本内容吗?
如果是这样,您将需要解析文档,并构建可以处理的数据结构,然后将其作为XML转储。
对于解析,有几个选项。 Microsoft have published二进制.doc格式的规范,其读取对于为其编写解析器至关重要。在.docx的情况下,你更幸运,因为它已经是XML格式,所以你可以使用任何XML解析库来读取文件,然后在结果树中搜索你感兴趣的数据.XML解析器可用于几乎任何语言,一个易于使用的解析器是MiniDom用于Python。
为了生成输出XML,再次向XML库的对象表示似乎是要走的路,例如MiniDom也是这样做的。
如果您不想处理编写自己的.doc解析器,可以通过转换器运行文档,该转换器首先生成更易于访问的格式 - 例如使用Word本身将.doc文件转换为.docx,或者从.docs生成RDF的工具,或者您可以使用现有的单词解析器,例如OpenOffice中的单词解析器。
答案 2 :(得分:2)
在VBA中使用非常低效的条件搜索来将文档直接复制到第二个文档中。然后以.xml扩展名保存第二个文档。完成了工作,但它很难看。
答案 3 :(得分:0)
您也可以尝试使用基于Java的Apache POI - HWPF。它支持文本extraction。然后,您必须创建自己的XML文档,Caster XML或Xstream可以帮助您解决该问题。
答案 4 :(得分:0)
这实际上取决于你想要做什么。
最简单的方法是将文档保存为Flat OPC XML(在Word中,“另存为...”XML),然后应用XSLT。
这种方法最简单,因为它将整个docx作为单个XML文件提供给您,因此您无需解压缩等。
如果您的要求更复杂,例如,分析格式或样式,或使用超链接做某事,那么对象模型(如docx4j(Java)或Open XML SDK(C#)) - 毫无疑问还有其他 - 可能有帮助。