marklogic - 为什么无效字符会进入 MarkLogic 数据库?
问题描述
我发现可以将无效的 XML 字符插入 MarkLogic 数据库。这只有在我碰巧提取 xdmp:quote 然后 xdmp:unquote 一个 XML 文档时才会变得明显,然后我收到一条消息,例如“无效字符实体 '14'”。
该角色通过 XQuery 生成的 HTML 表单提交进入数据库。我认为用户从 Excel 中粘贴了文本,其中包括这些隐藏的内容。
显然,我将来需要检查输入的内容,但这肯定是应该修复的错误。如果字符是非法的,为什么 MarkLogic 在将数据保存到数据库时不将它们删除?
尼尔。
解决方案
MarkLogic 在内存中和在持久化 XML 文档时都使用已解析的 XML 表示。无效字符会导致解析失败,从而阻止 MarkLogic 将文档存储为 XML。
但是,MarkLogic 可以将无效的 XML 序列化存储为文本或二进制文档。字节可能对 XML 无效,但它们对文本或二进制文件无效。
HTML 表单提交是否可以将文档作为文本或二进制文件而不是 XML 提交?xdmp:node-kind()
使用 检索时,关于表单提交和文档的报告是什么fn:doc()
?
希望对调查有帮助
推荐阅读
- r - R: if values of two columns of two data frames are equal, add column of one of the two data frames
- javascript - 启动调试前的 npm 任务
- node.js - 以编程方式取消 MongoDB 事务
- azure-ad-b2c - 有没有办法在 AD B2C 中显示不存在的用户帐户因错误尝试次数过多而导致帐户锁定之类的消息?
- html - 当其余内容为 iframe 时,在页面顶部放置警报横幅
- sql - 为什么我必须在此列上使用聚合函数?
- android - 如何安装CameraView
- java - 即使应用程序被杀死,我怎样才能让我的应用程序运行?从最近的应用程序中删除它时被杀死
- javascript - 为什么在 for 循环中使用 document.getElementById('').innerHTML 和 document.write() 的结果不一样?
- python - 与列表中的前缀和后缀单词匹配并返回一个包含所有链接单词的字符串