Как мне преобразовать SqlXml в XmlText? - PullRequest
3 голосов
/ 11 июля 2011

Я читаю некоторые данные, хранящиеся в формате Xml в базе данных SQL Server, и я использую C # для чтения этих данных. У нас есть тип с именем XmlText в System.Xml, но он не позволяет мне преобразовывать и сохранять данные из SqlXml в XmlText. Мне нужно скопировать данные из базы данных в формате XML в некоторый объект, а затем сериализовать этот объект. Затем мне нужно отправить коллекцию объектов по сети. Какое решение здесь?

1 Ответ

8 голосов
/ 11 июля 2011

В конечном счете, нет прямой связи между SqlXml и XmlText (и действительно, XmlText представляет только определенный тип узла, а не xml). Вам нужно будет спуститься до уровня string или byte[] и вернуться обратно (поскольку вы не используете потоковый ридер). Например:

string xml = reader.GetSqlXml(7).Value;
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

или

string xml = reader.GetSqlXml(7).Value;
XElement el = XElement.Parse(xml); 

или (возможно, более эффективно) с использованием XmlReader API:

XmlDocument doc = new XmlDocument();
using(XmlReader xr = reader.GetSqlXml(7).CreateReader()) {
    doc.Load(xr);
}

и

XElement el;
using(XmlReader xr = reader.GetSqlXml(7).CreateReader()) {
    el = XElement.Load(xr);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...