如何在MarkLogic中转义xml字符串中的特殊字符?
我有一个来自Java的base64编码格式的XML字符串如何在MarkLogic中转义xml字符串中的特殊字符?,marklogic,marklogic-8,Marklogic,Marklogic 8,我有一个来自Java的base64编码格式的XML字符串 PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4= 我使用xdmp:base64-decode()对其进行解码。它给我的输出是 <root><child>&</child><child>
PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=
我使用xdmp:base64-decode()
对其进行解码。它给我的输出是
<root><child>&</child><child><</child><child>></child><child>{</child><child>}</child>/root>
&{}/root>
输出是一个字符串。为了将其转换为XML,我使用了xdmp:unquote()
,但是这里的特殊字符会产生错误
我还尝试使用xdmp:unquote()
使用repair full
选项,但没有解决问题
注意:我的实际数据中存在一些特殊字符,这些字符会导致一些不必要的错误
如何处理这种情况以在MarkLogic中插入XML?base64编码字符串中的文本不是格式良好的XML。除了
&
和之外,这是格式错误的XML。你能修复源代码吗?像&
、
、“
和”
这样的字符应该表示为实体:、
、
、”
和&apos代码>。。
xdmp:unquote(
replace(
replace(
replace(
xdmp:base64-decode("PHJvb3Q+PGNoaWxkPiY8L2NoaWxkPjxjaGlsZD48PC9jaGlsZD48Y2hpbGQ+PjwvY2hpbGQ+PGNoaWxkPns8L2NoaWxkPjxjaGlsZD59PC9jaGlsZD4vcm9vdD4=")
,"&", "&amp;")
,"><<", ">&lt;<")
,"/root>", "</root>")
)
<root>
<child>&</child>
<child><</child>
<child>></child>
<child>{</child>
<child>}</child>
</root>