首页 > 解决方案 > 为什么无效字符会进入 MarkLogic 数据库?

问题描述

我发现可以将无效的 XML 字符插入 MarkLogic 数据库。这只有在我碰巧提取 xdmp:quote 然后 xdmp:unquote 一个 XML 文档时才会变得明显,然后我收到一条消息,例如“无效字符实体 '14'”。

该角色通过 XQuery 生成的 HTML 表单提交进入数据库。我认为用户从 Excel 中粘贴了文本,其中包括这些隐藏的内容。

显然,我将来需要检查输入的内容,但这肯定是应该修复的错误。如果字符是非法的,为什么 MarkLogic 在将数据保存到数据库时不将它们删除?

尼尔。

标签: marklogic

解决方案


MarkLogic 在内存中和在持久化 XML 文档时都使用已解析的 XML 表示。无效字符会导致解析失败,从而阻止 MarkLogic 将文档存储为 XML。

但是,MarkLogic 可以将无效的 XML 序列化存储为文本或二进制文档。字节可能对 XML 无效,但它们对文本或二进制文件无效。

HTML 表单提交是否可以将文档作为文本或二进制文件而不是 XML 提交?xdmp:node-kind()使用 检索时,关于表单提交和文档的报告是什么fn:doc()

希望对调查有帮助


推荐阅读