Преобразуйте объект System.Data.SqlTypes.SqlXml в C # 2.0 в System.Xml.XmlNode. - PullRequest
2 голосов
/ 18 сентября 2008

Кажется, у меня всегда возникают проблемы с преобразованием данных в XML и обратно в C #. Он всегда хочет, чтобы вы создали полный объект XMLDocument, даже если вы думаете, что не должны этого делать. В этом случае у меня есть столбец SQLXML на сервере MS SQL 2005, который я пытаюсь извлечь и вставить в функцию, для которой в качестве параметра требуется XMLNode. Вы могли бы подумать, что это будет легко, но кроме преобразования его в строку и создания нового объекта XMLNode, я не могу найти правильный способ сделать это.

Я могу использовать SqlDataReader, sqlComm.ExecuteReader () для загрузки считывателя и sqlReader.GetSqlXml (0) для получения объекта SQLXML, но тогда как мне преобразовать его в XmlNode?

И наоборот, я могу использовать sqlComm.ExecuteXmlReader (), чтобы получить XmlReader, но как мне извлечь XmlNode из читателя? http://bytes.com/forum/thread177004.html говорит, что это невозможно сделать с помощью XmlTextReader. Должен ли я использовать XmlNodeReader?

Помогите пожалуйста!

1 Ответ

5 голосов
/ 18 сентября 2008

В итоге мне не пришлось его использовать, но я нашел то, что я считаю лучшим ответом. В основном вы загружаете XmlReader, создаете XmlDocument из читателя, затем выбираете список узлов из документа в XmnLodeList, который вы можете использовать в операторе ForEach. Вот пример кода:

System.Xml.XmlReader sqlXMLReader = sqlComm.ExecuteXmlReader();
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.Load(sqlXMLReader);
System.Xml.XmlNodeList xnlJobs = xmlDoc.SelectNodes("/job");

Все еще извилистый как ад, но, по крайней мере, нет преобразования xml в строку в xml.

...