2010-03-13 3 views
9

Existe-t-il une bibliothèque équivalente pour JAXB dans .NET? J'essaye de convertir un XML que je reçois en classe .NET. J'ai le XSD, mais je ne sais pas comment convertir le XML reçu en une classe concrète? J'ai utilisé le XSD tool pour générer une classe à partir du schéma, mais ce que je veux pour convertir le XML que je reçois à la volée à un objet avec lequel je peux travailler dans le code..NET JAXB équivalent?

J'ai vu le thread here qui traite de cela, mais ma requête est - Je veux que l'objet créé contienne les données que je reçois dans le XML (c'est-à-dire que les valeurs de champs doivent être remplies).

Répondre

0

C'est une bien meilleure façon et plus proche de ce que je cherchais:

static public string serializeObject(ProductPriceLines objecteToSerialize) 
    { 
     System.Xml.Serialization.XmlSerializer mySerializer = new System.Xml.Serialization.XmlSerializer(typeof(ProductPriceLines)); 

     System.IO.MemoryStream t = new System.IO.MemoryStream(); 
     mySerializer.Serialize(t, objecteToSerialize); 


     UTF8Encoding utf = new UTF8Encoding(); 
     string strbytes = utf.GetString(t.ToArray()); 


     return strbytes; 
    } 
+1

Ne dis pas que vous avez tort , juste curieux de savoir pourquoi cette solution est meilleure que celle de Mike Two. +1 une fois que vous répondez. – JagWire

+1

Votre question demande XML => objet. Votre réponse le fait dans l'autre sens: object => XML. – ViToni

10

Vous pouvez utiliser xsd.exe pour générer la classe, puis utiliser XmlSerializer dans votre code pour remplir la classe. Par exemple, si xsd.exe crée une classe appelée Foo vous pouvez écrire:

Foo someFoo; 
using (var stream = new FileStream("foo.xml", FileMode.Open)) 
{ 
    var serializer = new XmlSerializer(typeof(Foo)); 
    someFoo = serializer.Deserialize(stream); 
}