2017-07-20 4 views
0

Merci d'avoir lu cette;)fichier XML sérialisation basés sur des balises (par exemple StartTags, EndTags)

Je veux sérialiser un fichier XML, mais les noms de balises seront différentes en fonction du fichier. J'ai un fichier de classe pour chaque fichier de configuration afin que je puisse créer un objet basé sur le fichier which. Ce dont j'ai besoin maintenant est un moyen d'identifier les noms d'étiquette (par exemple) afin que je puisse l'assigner à ses objets respectifs (par exemple James.cs). Aussi capable d'accéder au contenu des tags. J'utilise actuellement ASP.NET mais je ne trouve pas les bibliothèques qui répondent à mes besoins. HALP!

+0

Vous pouvez construire plusieurs 'XmlSerializers' et vérifier [' CanDeserialize (XmlReader) '] (https://msdn.microsoft.com/en-us/library /system.xml.serialization.xmlserializer.candeserialize.aspx) pour chacun comme expliqué dans [Comment désérialiser XML si le type de retour peut être un objet Erreur ou Succès] (https://stackoverflow.com/q/44234061/3744182). – dbc

+0

Et si vous demandez réellement [* Comment désérialiser le document XML *] (https://stackoverflow.com/q/364253/3744182), voir par exemple [ici] (https://stackoverflow.com/questions/364253/how-to-deserialize-xml-document/364410 # 364410). – dbc

Répondre

0

Vous pouvez vérifier le nom du tag puis utiliser XmlSerializer pour désérialiser les objets, cette fonction générique peut vous aider avec cela.

public static TObject XmlDeserialize<TObject>(XDocument xmlToDeserialize) 
{ 
    TObject deserializedObject = default(TObject); 
    XmlSerializer serializer = new XmlSerializer(typeof(TObject)); 
    using (System.IO.TextReader reader = new System.IO.StringReader(xmlToDeserialize.ToString())) 
    { 
     deserializedObject = (TObject)serializer.Deserialize(reader); 
    } 

    return deserializedObject; 
} 

Voir un exemple d'exécution dans: https://dotnetfiddle.net/5ViI1L