XML 字符串到 xml 无法切换编码
XML string to xml unable to switch encoding
我有一个格式错误的 XML 字符串。
DECLARE @xmlt TABLE(xstr nvarchar(max), xml xml)
INSERT INTO @xmlt(xstr) VALUES (
' <?xml version="1.0" encoding="windows-1257" ?>
- <objects><object id="778913">a</object>
- <object id="785491">b</object>
- <object ...goes on...
- </objects>
'
为了能够使用 XML 我将其转换为 XML
UPDATE @xmlt SET xml = CAST(REPLACE(LTRIM(xstr), ' - <', '<') AS xml);
但是我得到一个错误
XML parsing: line 1, character 46, unable to switch the encoding.
是否有任何其他方法(无需将字符串 encoding="windows-1257"
替换为 ""
)将 XML 字符串转换为 SQL 服务器中的 xml?
字段 xstr nvarchar(max)
与编码 windows-1257 不兼容。如果您使用 varchar(max),它不会在将字符串转换为 XML 时失败。 Varchar 类型和 Xml 编码是相关的。如果您的 XML 编码是统一编码的(例如 UFT-16),那么使用 nvarchar 就可以了。
这将适用于您的 xml 字符串:
DECLARE @xmlt TABLE(xstr varchar(max), xml xml)
insert into @xmlt(xstr) values( '<?xml version="1.0" encoding="windows-1257"?>
- <objects>
- <object id="778913">a</object>
- <object id="785491">b</object>
- </objects>')
update @xmlt set xml = cast ( REPLACE(ltrim(xstr),' - <','<') as xml)
我有一个格式错误的 XML 字符串。
DECLARE @xmlt TABLE(xstr nvarchar(max), xml xml)
INSERT INTO @xmlt(xstr) VALUES (
' <?xml version="1.0" encoding="windows-1257" ?>
- <objects><object id="778913">a</object>
- <object id="785491">b</object>
- <object ...goes on...
- </objects>
'
为了能够使用 XML 我将其转换为 XML
UPDATE @xmlt SET xml = CAST(REPLACE(LTRIM(xstr), ' - <', '<') AS xml);
但是我得到一个错误
XML parsing: line 1, character 46, unable to switch the encoding.
是否有任何其他方法(无需将字符串 encoding="windows-1257"
替换为 ""
)将 XML 字符串转换为 SQL 服务器中的 xml?
字段 xstr nvarchar(max)
与编码 windows-1257 不兼容。如果您使用 varchar(max),它不会在将字符串转换为 XML 时失败。 Varchar 类型和 Xml 编码是相关的。如果您的 XML 编码是统一编码的(例如 UFT-16),那么使用 nvarchar 就可以了。
这将适用于您的 xml 字符串:
DECLARE @xmlt TABLE(xstr varchar(max), xml xml)
insert into @xmlt(xstr) values( '<?xml version="1.0" encoding="windows-1257"?>
- <objects>
- <object id="778913">a</object>
- <object id="785491">b</object>
- </objects>')
update @xmlt set xml = cast ( REPLACE(ltrim(xstr),' - <','<') as xml)