Sql查询正在返回以下xml -
<Table>
<date>2014-01-15</date>
<Life_x0020__x0026__x0020_Zeal>3</Life_x0020__x0026__x0020_Zeal>
<Total>3</Total>
</Table>在这里,表中的列名是Life & Zeal,但xml显示的是Life_x0020__x0026__x0020_Zeal。
我参考了MSDN,发现它是一种UCS-2编码。我正在从C#代码中读取此xml,并希望将其解码回Life & Zeal。
该怎么做呢?
注意--我使用Sql Server 2008和FOR XML PATH命令来生成这个xml
发布于 2013-09-18 17:14:15
这与UCS2无关。
正如Kami指出的,包含非法字符的列名(对于XML节点名)是用其Unicode代码点等效项进行转换的,因此从技术上讲,您不能做您想做的事情。
我建议您在SELECT语句中添加一个别名
SELECT [Life & Zeal] AS LifeAndZeal以避免XML中的这些字符。
发布于 2013-09-18 17:09:43
在XML中,节点名称中不能有Space或Ampersand字符。我想这就是为什么它们在输出中被改变的原因。
不可能更改代码来显示这些值。但是,您应该能够更改SQL以在输出中对其进行重命名。
发布于 2013-09-18 17:14:40
更改编码的最简单方法是在读取XML文件(或流)时
using(XmlReader r = XmlReader.Create(new StreamReader(
fileName, Encoding.GetEncoding("UCS-2"))))
{
while(r.Read())
{
Console.WriteLine(r.Value);
}
}https://stackoverflow.com/questions/18868016
复制相似问题