消息9420非法xml字符,如何替换?

时间:2016-03-08 17:27:11

标签: sql sql-server xml

我有一个存储过程,可以动态地使用openrowset读取数千个xml文件。

但是在我的xml文件中,有一些实例,其中女性符号(♀)显示在特定的<>中。这导致XML解析错误9420.我想知道在尝试读取xml文件时如何删除/替换/忽略该符号。将文件保存为UTF-8不起作用,因为我有数千个文件,所以不方便。

以下是我用来读取xml文件的代码......

Declare @xml xml
Select @xml = t
from OPENROWSET (Bulk 'C:\path', SINGLE_BLOB) as Transactions(T)
select @xml

1 个答案:

答案 0 :(得分:0)

您最好的选择是让编写这些文件的系统不包含符号,或者确保他们在顶部设置正确的编码:示例: after<?xml version="1.0" encoding="ISO-8859-1"?>(我不确定该字符需要哪种编码)。

您还可以使用SSIS包来提取数据并进行清理。将整个记录丢弃到垃圾表中,或过滤掉字符并确保其编码为UTF-8标准。我更喜欢使用SSIS来提取平面文件数据,因为它可以更好地处理垃圾/坏数据。

第三个选项是将记录作为字符串拉入,使用REPLACE剥离字符,然后将其转换为XML。