2010-03-10 8 views
4

Si i Serializable le code suivant en utilisant XmlSerializer.Renommer la classe sérialisable

[XmlRoot("products")] 
public class Products : List<Product> 
{ 
} 
public class Product 
{ 
} 

Je reçois le xml

<ArrayOfProduct> 
    <Product/> 
</ArrayOfProduct> 

suivant Comment j'écrire pour obtenir la dénomination suivante des étiquettes (produits et produits minuscules)?

<products> 
    <product/> 
</products> 

Répondre

2

Simple; ne héritons pas de List<T>:

[XmlRoot("products")] 
public class ProductWrapper 
{ 
    private List<Product> products = new List<Product>(); 

    [XmlElement("product")] 
    public List<Product> Products { get {return products; } } 
} 
public class Product 
{ 
} 
+0

Je suis d'accord avec la solution proposée, mais il est intéressant pourquoi [XmlRoot ("produits")] est ignoré dans le code de l'auteur – Andrey

1

Comment allez-vous sérialisation? Je l'ai utilisé le code suivant:

Products products = new Products(); 
products.Add(new Product()); 

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

using (StringWriter sw = new StringWriter()) 
{ 
    serializer.Serialize(sw, products); 

    string serializedString = sw.ToString(); 
} 

et a obtenu ce résultat:

<?xml version="1.0" encoding="utf-16"?> 
<products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Product /> 
</products> 
+0

Hmm .. ajouter '[XmlType (" product ")]' à 'Product' ftw ;-p –

Questions connexes