将字符串转换为 XML
Convert String To XML
如何将下面的字符串转换为 XML,
SET @string = '<Field>
<Field Name="'+@Cname+'">
<DataField>'+@Cname+'</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>'
我尝试了 SET @xmlstring = CONVERT(XML,@string)
但它显示以下错误
消息 9459,级别 16,状态 1,第 17 行
XML 解析:第 4 行,字符 13,未声明的前缀
您的 xml 需要正确格式化。
尝试使用“/”关闭带有 prop Name 的标签字段,并去掉 TypeName 中的前缀 rd。
SET @string = '<Field>
<Field Name="'+@Cname+'" />
<DataField>'+@Cname+'</DataField>
<TypeName>System.String</TypeName>
</Field>'
哦不!切勿通过字符串连接创建 XML!想象一下,您的变量带有 this -> value
或 Tim, Tom & Fred
之类的值...这可能会完美运行,通过所有测试并在推出后因未定义错误而中断。
始终使用 SQL-Servers 支持创建 XML:
DECLARE @cname VARCHAR(100)='Some Name';
DECLARE @xml XML=
(
SELECT @cname AS [Field/@Name]
,@cname AS [DataField]
,'System.String' AS [TypeName]
FOR XML PATH('Field')
);
SELECT @xml;
结果
<Field>
<Field Name="Some Name" />
<DataField>Some Name</DataField>
<TypeName>System.String</TypeName>
</Field>
这里是命名空间:
WITH XMLNAMESPACES('Some.namespace.url' AS rd)
SELECT @xml=
(
SELECT @cname AS [Field/@Name]
,@cname AS [DataField]
,'System.String' AS [rd:TypeName]
FOR XML PATH('Field')
);
SELECT @xml
结果
<Field xmlns:rd="Some.namespace.url">
<Field Name="Some Name" />
<DataField>Some Name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
如何将下面的字符串转换为 XML,
SET @string = '<Field>
<Field Name="'+@Cname+'">
<DataField>'+@Cname+'</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>'
我尝试了 SET @xmlstring = CONVERT(XML,@string)
但它显示以下错误
消息 9459,级别 16,状态 1,第 17 行
XML 解析:第 4 行,字符 13,未声明的前缀
您的 xml 需要正确格式化。
尝试使用“/”关闭带有 prop Name 的标签字段,并去掉 TypeName 中的前缀 rd。
SET @string = '<Field>
<Field Name="'+@Cname+'" />
<DataField>'+@Cname+'</DataField>
<TypeName>System.String</TypeName>
</Field>'
哦不!切勿通过字符串连接创建 XML!想象一下,您的变量带有 this -> value
或 Tim, Tom & Fred
之类的值...这可能会完美运行,通过所有测试并在推出后因未定义错误而中断。
始终使用 SQL-Servers 支持创建 XML:
DECLARE @cname VARCHAR(100)='Some Name';
DECLARE @xml XML=
(
SELECT @cname AS [Field/@Name]
,@cname AS [DataField]
,'System.String' AS [TypeName]
FOR XML PATH('Field')
);
SELECT @xml;
结果
<Field>
<Field Name="Some Name" />
<DataField>Some Name</DataField>
<TypeName>System.String</TypeName>
</Field>
这里是命名空间:
WITH XMLNAMESPACES('Some.namespace.url' AS rd)
SELECT @xml=
(
SELECT @cname AS [Field/@Name]
,@cname AS [DataField]
,'System.String' AS [rd:TypeName]
FOR XML PATH('Field')
);
SELECT @xml
结果
<Field xmlns:rd="Some.namespace.url">
<Field Name="Some Name" />
<DataField>Some Name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>