没有足够的内存将base64 rtf doc转换为xml?

时间:2015-10-14 18:46:40

标签: base64 rtf marklogic marklogic-8

好的,我正在尝试解码MarkLogic中的base64编码rtf文档。

conn.get_instance_attribute(instance_id=instance.id, attribute='blockDeviceMapping')['blockDeviceMapping']
{u'/dev/sda1': <boto.ec2.blockdevicemapping.BlockDeviceType object at 0x2a62190>}

我收到此错误:

xquery version "1.0-ml";

declare namespace cdm = "http://example.nl/cdm/1.2";

let $inh := <cdm:inhoud>

Large base64  encoded RTF doc here

</cdm:inhoud>
let $pv           := $inh/text()
(:
let $decodedDoc   := document {xdmp:document-filter( text{ xdmp:base64-decode($pv) } )}
:)
return document {xdmp:document-filter( text{ xdmp:base64-decode($pv) } )}

仅运行

 SVC-PROCESSRUN: xdmp:document-filter(text{"{\rtf1\ansi\ansicpg1252\uc1\deff1{\fonttbl&#13;&#10;{\f0\fnil\fc..."}) -- Process run error: fork: Cannot allocate memory

解码rtf文件,但确实很乱......

我的服务器内存不足吗?

1 个答案:

答案 0 :(得分:0)

我认为问题主要在于您强制MarkLogic将整个解码后的字符串以及过滤后的结果保留在内存中。如果您不需要在此代码中进行解码,并将文档或请求正文直接搜索到文档过滤器,这将有所帮助。也不要将文档过滤器结果包装在文档构造函数中。它已经返回一个文档节点。

HTH!