Преобразуйте C # 2.0 объект System.Data.SqlTypes.SqlXml в объект System.Xml.XmlNode

StackOverflow https://stackoverflow.com/questions/90803

Вопрос

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

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

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

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

Это было полезно?

Решение

В итоге мне не пришлось им пользоваться, но я нашел то, что, по моему мнению, является лучшим ответом.По сути, вы загружаете XmlReader, создаете XmlDocument из reader, затем выбираете список узлов из документа в 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 в string в xml.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top