我在XML文件上运行xquery时遇到错误。实际上,XML中有一些元素与数据一起具有unicode字符。
"+30 2222032000",
"+30 6973222259\u001f"
我尝试使用替换和删除函数,但我不确定我的源文件中可以包含所有unicode字符。有没有通用的方法,我可以删除所有这些字符
谢谢
XML文档中的每个字符都是Unicode字符,如果有非Unicode字符,那么您确实会遇到问题。
您的实际问题是该文档使用Unicode字符编码“\ u001f”,XML解析器无法识别。它是完全合法的XML内容,它只是被视为一个由反斜杠开头的6个字符的序列,而不是控制字符x1F的表示(因为它发生的不是XML 1.0允许的字符) 。
处理这些字符的一种方法是将“+30 6973222259 \ u001f”视为JSON字符串,并使用XQuery 3.1函数json-to-xml()
将其转换为XML(它需要包含引号)。但是,如果存在转换为XML不允许的字符的转义序列(如\u0000
),则会出现问题。 json-to-xml()
函数有各种选项来处理这种情况。