如何加载&在Marklogic Server中查询word / excel文件?

时间:2012-05-31 13:28:05

标签: xml xquery marklogic

我想将MS Office word / excel文档加载到Marklogic中,并希望使用xquery查询它们,就像使用xml文档一样。但是当我将doc文件加载到Marklogic时,它会将它们加载成二进制格式,并在使用查询控制台查看时显示垃圾字符。我尝试使用以下命令加载: -

xdmp:document-load("E:\doc\sample.doc", 
    <options xmlns="xdmp:document-load"
             xmlns:http="xdmp:http">
      <format>xml</format>
    </options>)

但它显示一个错误,说文件不是UTF 8编码。我想知道是否可以将doc和xls文件加载到Marklogic中,或者在加载它们之前必须将它们转换为xml或UTF 8编码格式。如果是,那么转换它们的过程是什么。如果不是,那么我们如何使用xquery查询它们。我还想知道转换过程是否需要安装MS Office 2007/2010,因为Office 2007和Office 2007都是如此。 2010支持OOXML格式。

请给我适当的指导。

3 个答案:

答案 0 :(得分:6)

如果您以2007/2010之前的格式处理Office文档,Grtjn的回复是正确的。对于2007/2010文档,启用&#34; Office OpenXML ExtractOffice OpenXML Extract&#34; CPF中的管道并重新加载文档。此管道不需要额外的转换选项。它将按原样加载源XML。

Office 2007/2010 docs只是包含相互关联的XML部分的.zip文件。此管道将解压缩任何.docx,.xlsx,.pptx文档,并将其组件部分保存在源文档之后命名的目录中。该目录将保存为源文档的兄弟,并将链接到源,因此,如果删除源.docx,则还将删除包含提取的部分的目录。

确保数据库的自动目录创建设置为true。 (这是MarkLogic 5.0及之前版本的默认设置。)

答案 1 :(得分:3)

它们是二进制的,因此它们应该作为二进制插入。但是你希望它们被转换。 MarkLogic可以自动为您完成。为此,请执行以下操作:

  • 打开管理界面
  • 转到相应的数据库
  • 打开“内容处理”页面
  • 打开“安装”标签,将“启用转换”切换为“true”,然后点击“安装”
  • 检查域的范围以确保您在该范围内插入,例如将文档插入以范围uri开头的数据库uri。 (这很可能意味着你需要为xdmp添加一个uri选项:以/开头的文档加载)
  • 检查管道以查看自动转换的内容类型以及格式(最常见的是xhtml或docbook)
  • 重新运行xdmp:document-load

内容处理框架将创建包含转换结果的其他文件。这通常包含带文本的xhtml,单独的图像文件(如果有),带有布局属性的css等。

这需要带有转换选项的许可证。

HTH!

答案 2 :(得分:0)

OOXML

.doc.xls是二进制文件,XQuery处理器无法直接处理。

像你提到的那样使用OOXML。将文件保存为.docx.xlsx,这些文件是压缩的XML文件(在zip文件夹中有一些更多的资源,如图像)。也许Marklogic zip module可以帮助您提取文件。

使用MS Office 2003

这也可以使用安装了File Format Compatibility Pack的MS Office 2003来完成。对不起,我无法帮助您进行批量转换,但确定有一些方法可以使用VBA执行此操作 - 如果需要,请提出另一个问题。