【发布时间】:2014-09-26 07:47:33
【问题描述】:
我有一个 int 值存储在 SQL Server 中,为 xml 类型,在 C# 中检索时为 SqlXml
数据库中的值:
<int>1234</int>
如何将此值反序列化为具有值1234 的int?
【问题讨论】:
-
看到这个Link
标签: c# sql-server xml sqlxml
我有一个 int 值存储在 SQL Server 中,为 xml 类型,在 C# 中检索时为 SqlXml
数据库中的值:
<int>1234</int>
如何将此值反序列化为具有值1234 的int?
【问题讨论】:
标签: c# sql-server xml sqlxml
假设SqlXml 对象完全包含问题中提到的内容,您可能需要使用以下辅助方法。应该适用于以这种方式序列化的任何类型,甚至是复杂的对象。
static T GetValue<T>(SqlXml sqlXml)
{
T value;
// using System.Xml;
using (XmlReader xmlReader = sqlXml.CreateReader())
{
// using System.Xml.Serialization;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
value = (T) xmlSerializer.Deserialize(xmlReader);
}
return value;
}
示例案例:
using (MemoryStream stream = new MemoryStream())
using (XmlWriter writer = new XmlTextWriter(stream, Encoding.ASCII))
{
writer.WriteRaw("<int>123</int>");
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);
using (XmlReader reader = new XmlTextReader(stream))
{
SqlXml sqlXml = new SqlXml(reader);
int value = GetValue<Int32>(sqlXml);
Debug.Assert(123 == value);
}
}
【讨论】: