2010-01-29 3 views
1

J'ai entrée xml qui ressemble (version simplifiée utilisée par exemple):Est-il possible de désérialiser xml en objet List en utilisant les attributs de sérialisation fournis par .net?

<Student> 
<Subject> History </Subject> 
<Subject> English </Subject> 
</Student> 

est-il un moyen d'obtenir le code XML ci-dessus désérialisée à un objet dont la classe ressemble à:

[Serializable] 
[XmlRoot(ElementName = "Student", Namespace="")] 
class Student 
{ 
    public Student() 
    { 
    Subject = new List<string>(); 
    } 

    public List<string> Subject {get;set;} 

} 

Remarque J'essaie de comprendre si cela peut être fait sans avoir à implémenter l'interface IXmlSerializable, et je veux utiliser une liste pour stocker les valeurs Sujet (pas une chaîne [] que je sais est possible que j'utilise l'attribut XmlElement) .

+1

Il est possible que vous rencontriez des erreurs? – taylonr

+0

brb, NetDataContractSerializer. – Will

Répondre

4

Décorez la propriété Subject avec le XmlArrayAttribute.

[XmlArray] 
public List<string> Subject { get; set; } 

Si vous avez besoin d'omettre l'élément sujet et avoir les entrées sujet directement en dessous des étudiants, vous pouvez simplement utiliser le [XmlElement] attribut:

[XmlElement] 
public List<string> Subject { get; set; } 

sérialisation cela avec la classe des étudiants produit une sortie similaire à celle-ci:

<?xml version=\"1.0\" encoding=\"utf-16\"?> 
<Student xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> 
    <Subject>History</Subject> 
    <Subject>English</Subject> 
</Student>" 
+0

Pouvez-vous toujours utiliser une liste pour cela? Je pensais qu'il lance une erreur à moins qu'il ne soit en série à un tableau. –

+0

J'ai déjà essayé ça. Cela ne semble pas fonctionner! – jvtech

+0

En fait vous avez raison, "Vous pouvez également l'appliquer aux collections et champs qui renvoient une ArrayList ou tout champ qui renvoie un objet qui implémente l'interface IEnumerable." http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayattribute.aspx –

Questions connexes