2011-01-05 4 views
0

Je dois poser une question générale. Je n'ai pas le code devant moi parce que j'écris ceci sur mon iPhone.ASP.NET MVC 2: Désérialiser la réponse de SPROC

J'ai une classe qui représente un certain schéma XML. J'ai un SPROC qui renvoie ce XML. Ce que je dois faire est de désérialiser le XML dans cette classe.

XML:

<xml> 
    <person> 
      <firstName>Bob</firstName> 
      <lastName>Robby</lastName> 
    </person> 
</xml> 

Je dois désérialiser ce code XML dans la boucle de classe personnalisée personne que je peux à travers ce modèle et cracher dans la vue. Je suis sûr qu'il y a une sorte de casting impliqué, je ne sais pas comment le faire.

+0

.NET 4? Vous pouvez vraiment utiliser le mot-clé Dynamic ici ... – turtlepick

Répondre

0

Ma solution:

public class Program { 
     public static void Main(string[] args) { 


      string xml = @"<xml><person><firstName>Bob</firstName><lastName>Robby</lastName></person></xml>"; 

      var doc = XElement.Parse(xml); 
      var person = (from x in doc.Elements("person") select x).FirstOrDefault(); 

      XmlSerializer serializer = new XmlSerializer(typeof(Person)); 

      var sr = new StringReader(person.ToString()); 
      // Use the Deserialize method to restore the object's state. 
      var myPerson = (Person)serializer.Deserialize(sr); 

     } 

    } 

Et Classe:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Serialization; 

namespace ConsoleApplication3 { 

    [XmlRoot("person")] 
    public class Person { 

     [XmlElement("firstName")] 
     public string FirstName { get; set; } 

     [XmlElement("lastName")] 
     public string LastName { get; set; } 
    } 

} 
0

dans LINQ ce serait quelque chose comme ça

XDocument xmlFile = XDocument.Parse(yourXml)  
var people = (from x in xmlFile.Descendants("person") 
       select new Person(){ 
         firstname = (string)x.Element("firstname").Value, 
         lastname = (string)x.Element("lastname").Value 
       });