如何转义 MarkLogic 中 xml 字符串中的特殊字符?
How to escape special characters present in xml string in MarkLogic?
我有一个来自 Java 的 XML 字符串,采用 base64 编码格式。
PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=
我使用xdmp:base64-decode()
对其进行解码。它给我输出
<root><child>&</child><child><</child><child>></child><child>{</child><child>}</child>/root>
输出是一个字符串。为了将其转换为 XML,我使用 xdmp:unquote()
,但此处出现的特殊字符会产生错误。
我也尝试将 repair-full
选项与 xdmp:unquote()
一起使用,但没有解决问题。
注意:我的实际数据中存在一些特殊字符,这些字符会导致一些不需要的错误。
如何处理这种情况以在 MarkLogic 中插入 XML?
来自该 base64 编码字符串的文本格式不正确 XML。除了 &
和 <
编码不正确之外,root
元素的结束标记也缺失 <
。在字符串的末尾,</child>/root>
应该是 </child></root>
.
作为如何可能擦除文本并修复它的示例,下面的代码将修复这个特定的解码值,然后使用 xdmp:unquote()
解析为 XML:
xdmp:unquote(
replace(
replace(
replace(
xdmp:base64-decode("PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=")
,"&", "&amp;")
,"><<", ">&lt;<")
,"/root>", "</root>")
)
它产生以下格式正确的 XML:
<root>
<child>&</child>
<child><</child>
<child>></child>
<child>{</child>
<child>}</child>
</root>
但是,这种修复很乏味并且会变得困难。最好使用 TagSoup 等工具来修复标记并将其变成格式正确的 XML。
我有一个来自 Java 的 XML 字符串,采用 base64 编码格式。
PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=
我使用xdmp:base64-decode()
对其进行解码。它给我输出
<root><child>&</child><child><</child><child>></child><child>{</child><child>}</child>/root>
输出是一个字符串。为了将其转换为 XML,我使用 xdmp:unquote()
,但此处出现的特殊字符会产生错误。
我也尝试将 repair-full
选项与 xdmp:unquote()
一起使用,但没有解决问题。
注意:我的实际数据中存在一些特殊字符,这些字符会导致一些不需要的错误。
如何处理这种情况以在 MarkLogic 中插入 XML?
来自该 base64 编码字符串的文本格式不正确 XML。除了 &
和 <
编码不正确之外,root
元素的结束标记也缺失 <
。在字符串的末尾,</child>/root>
应该是 </child></root>
.
作为如何可能擦除文本并修复它的示例,下面的代码将修复这个特定的解码值,然后使用 xdmp:unquote()
解析为 XML:
xdmp:unquote(
replace(
replace(
replace(
xdmp:base64-decode("PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=")
,"&", "&amp;")
,"><<", ">&lt;<")
,"/root>", "</root>")
)
它产生以下格式正确的 XML:
<root>
<child>&</child>
<child><</child>
<child>></child>
<child>{</child>
<child>}</child>
</root>
但是,这种修复很乏味并且会变得困难。最好使用