2010-07-29 4 views
0

Je crée un fichier XML en utilisant le module System.Xml.Serialization. J'ai une classe qui est sérialisée dans un fichier XML. Le fichier ressemble à ceci:C# deserialize xml avec des lignes 'encoding' et 'stylesheet' spécifiées

<itemList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <itemListed> 
    <item ID="81288" Synopsys="Reset search point" CompletedTime="7/27/10 4:12 PM" Resolver="owner1" /> 
    <item ID="81285" Synopsys="Added contructor" CompletedTime="6/05/10 9:23 AM" Resolver="owner2" /> 
    </itemListed> 
</itemList> 

Le problème est, je voudrais de générer ceci:

<?xml version="1.0" encoding="iso-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="item.xsl"?> 
    <itemListed> 
    <item ID="81288" Synopsys="Reset search point" CompletedTime="7/27/10 4:12 PM" Resolver="owner1" /> 
    <item ID="81285" Synopsys="Added contructor" CompletedTime="6/05/10 9:23 AM" Resolver="owner2" /> 
    </itemListed> 

Toute idée ce que je dois changer ma classe?

Mon code:

public class Item { [XmlAttribute("ID")] public string ID { get; set; }

[XmlAttribute("Synopsys")] 
    public string Synopsys { get; set; } 

    [XmlAttribute("CompletedTime")] 
    public string CompletedTime { get; set; } 

    [XmlAttribute("Resolver")] 
    public string Resolver { get; set; } 
} 

public class ItemList 
{ 
    [XmlArray(ElementName = "itemListed")] 
    [XmlArrayItem(ElementName = "item")] 
    public List<Item> ItemList { get; set; } 
} 

Je vous remercie de toute aide. Merci Tony

Répondre

1

Je n'ai pas trouvé un moyen facile de personnaliser la feuille de style ou de la ligne de codage, mais je l'ai trouvé une bonne suggestion:

link text

L'idée est de plus ou moins écrire votre propre classe de sérialisation. J'ai pris l'idée de l'article et j'ai créé une classe qui sérialise la classe (en utilisant la bibliothèque C#) puis un filtre modifie l'en-tête pour modifier la ligne de codage et ajouter la ligne de style.
Lorsque je charge le fichier XML, je le lis, je le passe dans le filtre pour supprimer la ligne de style et je change la ligne de codage. Une fois cela fait, j'utilise le désérialiseur fourni par C#. Cela semble fonctionner.

Tony

-1

Une solution pourrait être d'implémenter l'interface IXmlSerializable sur votre classe. Je ne suis pas sûr si le XmlWriter vous permettra d'écrire une balise XML ou non. Proper way to implement IXmlSerializable?

+0

Merci pour la suggestion, mais je pense que j'ai trouvé et plus facile de faire face à ce problème. Tony – tony

+0

Pouvez-vous poster ce que votre réponse était et la marquer comme la réponse? Je suis intéressé par ce que vous avez trouvé. –

Questions connexes