7
votes

XML à C # Question de classe

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; }
    } 
}


2 commentaires

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


7 Réponses :


0
votes

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].

Quel problème spécifique avez-vous?


0 commentaires

11
votes

Avez-vous utilisé XSD de VS2008?

Voici la sortie que j'ai obtenue: xxx

génère une sortie sérialisable: xxx < / p>


0 commentaires

1
votes

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.

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 ().


0 commentaires

3
votes

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; }
}


0 commentaires

1
votes

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>();
    }
}


0 commentaires

3
votes

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; }
}


0 commentaires

11
votes

Vous avez deux possibilités.

Méthode 1. XSD outil


Supposons que vous ayez votre fichier XML dans cet emplacement c: \ path \ to \ xml \ file.xml

  1. Ouvrez Invite de commande de développeur

    Vous pouvez le trouver dans Menu de démarrage> Programmes> Microsoft Visual Studio 2012> Outils Visual Studio Ou si vous avez Windows 8, vous pouvez simplement commencer à taper Invite de commande de développeur dans écran de démarrage
  2. Changer l'emplacement dans votre répertoire de fichiers XML en tapant CD / D "C: \ PATH \ TO \ XML"
  3. Créez Fichier XSD à partir de votre fichier XML en tapant xsd fichier.xml
  4. Créez C # Classes en tapant xsd / c fichier.xsd

    Et c'est tout! Vous avez généré des classes C # à partir du fichier XML dans C: \ chemin \ to \ xml \ file.cs

    Méthode 2 - Coller spécial


    Evalué Visual Studio 2012 +

    1. Copier le contenu de votre fichier XML dans le presse-papiers
    2. Ajouter à votre solution Nouveau, fichier de classe vide ( shift + alt + c )
    3. Ouvrez ce fichier et dans menu Cliquez sur Edition> Coller spécial> Coller XML en tant que classes
      Entrez la description de l'image ici

      Et c'est tout!

      Utilisation

      L'utilisation est très simple avec cette classe d'assistance: xxx

      Tout ce que vous avez à faire maintenant, est : xxx

      ici, vous avez des XML <-> JSON convertisseurs: Cliquez sur


0 commentaires