Предполагая, что объект 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);
}
}
Смотрите это [ссылка] (http://stackoverflow.com/questions/13562635/deserialize-xml-object-in-t-sql) – Rajesh