Question

Il semble que j'ai toujours des problèmes avec la conversion de données en XML à partir de XML en C #. Il souhaite toujours que vous créiez un objet XMLDocument complet même lorsque vous pensez que vous ne devriez pas avoir à le faire. Dans ce cas, j'ai une colonne SQLXML dans un serveur MS SQL 2005 que j'essaie d'extraire et d'insérer dans une fonction qui nécessite un XMLNode en tant que paramètre. Vous penseriez que cela serait facile, mais en dehors de la convertir en chaîne et de créer un nouvel objet XMLNode, je ne peux pas trouver la bonne façon de le faire.

Je peux utiliser un SqlDataReader, le sqlComm.ExecuteReader () pour charger le lecteur et sqlReader.GetSqlXml (0) pour obtenir l'objet SQLXML, mais comment puis-je le convertir en XmlNode?

Inversement, je peux utiliser sqlComm.ExecuteXmlReader () pour obtenir un XmlReader, mais comment puis-je extraire un XmlNode du lecteur? http://bytes.com/forum/thread177004.html indique que cela ne peut pas être fait avec un XmlTextReader, dois-je utiliser un XmlNodeReader?

Aide s'il vous plaît!

Était-ce utile?

La solution

J'ai fini par ne pas avoir à l'utiliser, mais j'ai trouvé ce que je pense être la meilleure réponse. En gros, vous chargez un XmlReader, créez un XmlDocument à partir du lecteur, puis sélectionnez une liste de noeuds du document dans un XmnLodeList, que vous pouvez utiliser dans une instruction ForEach. Voici un exemple de code:

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

Toujours très compliqué, mais au moins, il n'y a pas de conversions XML à chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top