Si vous avez le WCF Rest Starter aperçu Kit installé, il y a une astuce:
- ouvert Visual Studio
- sélectionner le contenu de votre noeud XML (le XML qui fait un de vos nœuds) et copier le presse-papiers
- à partir du menu « Edition » dans Visual studio, choisissez « XML coller en tant que types »
Cela collera votre XML qui est le presse-papiers dans votre projet en tant que classe C# qui est capable de désérialiser ce XML exact. Assez chouette!
Voir ces messages de blog à ce sujet:
Cela devrait vous faire économiser beaucoup de frappe et rendre la vie beaucoup plus facile!
MISE À JOUR:
OK, vous avez déjà vos classes générées à partir du XML vous revenez. Maintenant vous devez convertir un XmlNode
à votre classe.
Vous devez faire quelque chose comme ceci:
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
Vous devez écrire la représentation XML (propriété .OuterXml
) du XmlNode
à un flux (ici un MemoryStream
), puis utilisez le XmlSerializer
sérialiser retourner l'objet de ce flux.
Vous pouvez le faire avec la méthode générique et appeler
Customer myCustomer = ConvertNode<Customer>(xmlNode);
ou vous pouvez même transformer ce code soit dans une méthode d'extension de la classe XmlNode
pour que vous puissiez écrire:
Customer myCustomer = xmlNode.ConvertNode<Customer>();
Marc
Salut, j'ai déjà les objets de la xsd donc je n'ai vraiment pas besoin de faire cette étape. Je veux apprendre quel est le meilleur moyen de passer de xmlNodes [] (objet sérialisé). – 76mel