Marklogic 替换字符 � 到双引号

Marklogic replacement character � to double quote

如何替换字符 � 是在 Unicode 中找到的符号,在 Marklogic 中用双引号引起来。我发现成千上万的文档(xml 格式)在随机元素节点中出现了特殊字符(有些节点有字符 � ,有些节点没有)。想要在文档中搜索特殊字符并永久替换双引号(")。

let $doc := fn:doc("/user/24325.xml")//fields/SearchFieldvalue
let $b:=fn:replace($doc,"�",""")
return ($doc,$b)

[1.0-ml] XDMP-ARGTYPE: (err:XPTY0004) 
fn:replace((fn:doc("/user/24325.xml")//fields/SearchField[1]/value,
fn:doc("/user/24325.xml")//fields/SavedSearchField[2]/value, 
fn:doc("/user/24325.xml")//fields/SavedSearchField[3]/value, ...), 
"�", """) -- arg1 is not of type xs:string?

首先我会处理预防方面的问题:您可能有这些,因为文档加载时使用了不正确的编码。解决此问题的一种方法是重新加载文档,但指定正确的编码。

我认为您想使用 cts:highlight 遍历文档并替换有问题的字符:

cts:highlight(doc("/user/24325"), "󿿽", '"')

结果将是替换字符的所有匹配项都替换为双引号的文档。