首页 > 解决方案 > SQL Server 2019 - 对于 XML 路径 - 非 ascii 字符编码

问题描述

我需要建立一个“复杂”xml来生成 AWB 标签

地址可以包含“禁止”的 xml 字符 &,,<,> 以及 ',ä,å 等

因此,为了解决这个问题,我创建了一个简单的函数来替换这些字符:

ALTER function [dbo].[encodeXML](@t nvarchar(512))
returns nvarchar(512)
as
begin
  --if @t is not null and @t <>''
    return trim(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@t,'&','&amp;'),'"','&quot;'),'<','&lt;'),'>','&gt;'),'''','&apos;'))
end

此函数将“”编码Quartu Sant'Elena为“ Quartu Sant&apos;Elena

但是每批货物的详细信息都通过以下方式封装到 xml 节点中for xml path ('Parcel'), type

并且“ Quartu Sant&apos;Elena”变成“ Quartu Sant&amp;apos;Elena”不被接受。

我该如何解决?

请注意,所有货物都进一步封装在 xml 路径('Info')容器中,因此该解决方案应同时解决 xml 功能

标签: sql-servernon-ascii-charactersfor-xml-path

解决方案


推荐阅读