Quelqu'un peut-il m'aider s'il vous plaît, j'ai cet extrait XML
public class DefaultSendToAddressCollectionClass
{
private string[] emailAddress;
public string[] EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
}
7 Réponses :
sérialisation XML nécessite des attributs. La façon dont j'ai l'habitude de faire consiste à signaler la classe elle-même avec [Serializable] et [xmlroot], puis relancez les propriétés publiques avec [xmlelement], [xmlattribute] ou [norationialize]. P>
Quel problème spécifique avez-vous? P>
Avez-vous utilisé XSD de VS2008?
Voici la sortie que j'ai obtenue: p> génère une sortie sérialisable: p>
xsd.exe est l'outil qui produit des cours spécifiquement aux fins de la sérialisation XML. S'il produit des classes partielles, c'est parce qu'ils travaillent pour la sérialisation XML. Ce n'est pas ce que votre problème est. p>
Essayez d'utiliser xsd.exe et sérialiser / désérialiser. Si vous obtenez une nouvelle exception à nouveau, veuillez l'attraper, puis publier les résultats de EX.Tostring (). P>
Utiliser .NET 3.5:
[XmlRoot]
public class EmailConfiguration
{
[XmlElement]
public string DataBoxID { get; set; }
[XmlElement]
public DefaultSendToAddressCollectionClass DefaultSendToAddressCollection { get; set; }
}
public class DefaultSendToAddressCollectionClass
{
[XmlElement]
public string[] EmailAddress { get; set; }
}
Cette classe sera sérialisée comme vous le souhaitez. J'ai changé votre collection personnalisée dans une liste et j'ai utilisé l'attribut XMLARrayItem pour spécifier la manière dont chaque adresse électronique serait sérialisée. Il existe de nombreux attributs de ce type pour vous aider à régler le processus de sérialisation.
[Serializable]
public class EmailConfiguration {
private string dataBoxID;
public string DataBoxID {
get { return dataBoxID; }
set { dataBoxID = value; }
}
private List<string> defaultSendToAddressCollection;
[XmlArrayItem("EmailAddress")]
public List<string> DefaultSendToAddressCollection {
get { return defaultSendToAddressCollection; }
set { defaultSendToAddressCollection = value; }
}
public EmailConfiguration() {
DefaultSendToAddressCollection = new List<string>();
}
}
Bare minimum de travail ... On dirait que vous n'êtes requis que d'ajouter un attribut.
public class EmailConfiguration
{
public string DataBoxID { get; set; }
public DefaultSendToAddressCollectionClass DefaultSendToAddressCollection { get; set; }
}
public class DefaultSendToAddressCollectionClass
{
[XmlElement]
public string[] EmailAddress { get; set; }
}
Vous avez deux possibilités.
p>
Supposons que vous ayez votre fichier XML dans cet emplacement Et c'est tout! Vous avez généré des classes C # à partir du fichier XML dans P >
Evalué Visual Studio 2012 + P> Et c'est tout! p> L'utilisation est très simple avec cette classe d'assistance: p> Tout ce que vous avez à faire maintenant, est : p> ici, vous avez des c: \ path \ to \ xml \ file.xml code> p>
Vous pouvez le trouver dans Menu de démarrage> Programmes> Microsoft Visual Studio 2012> Outils Visual Studio Code>
Ou si vous avez Windows 8, vous pouvez simplement commencer à taper CD / D "C: \ PATH \ TO \ XML" CODE> LI>
xsd fichier.xml code> li>
xsd / c fichier.xsd code> li>
ol> C: \ chemin \ to \ xml \ file.cs code> p> Méthode 2 - Coller spécial H2>
Edition> Coller spécial> Coller XML en tant que classes code>
li>
ol> Utilisation h2>
XML <-> JSON code> convertisseurs: Cliquez sur P> P>
Quel est le problème avec des classes partielles quand même? Il sépare votre fichier de définition XML de votre logique commerciale pour la même classe.
Peut-être que cela aide quelqu'un qui ressemble une solution similaire Stackoverflow.com/a/10353093/1221319