Paramétrer un fichier template xml [Résolu]

arweene 3 Messages postés vendredi 24 juillet 2015Date d'inscription 5 août 2015 Dernière intervention - 24 juil. 2015 à 16:12 - Dernière réponse : arweene 3 Messages postés vendredi 24 juillet 2015Date d'inscription 5 août 2015 Dernière intervention
- 5 août 2015 à 16:07
Bonjour,
je voudrais créer un fichier xml template avec des variables comme par exemple:
<class>
<a>$a</a>
<b>$b</b>
<c>
<d>$x</d>
<e>$y</e>
<c>

les variables prennent les valeurs de la BD et donc je crée un fichier xml à partir de ce template avec différentes valeurs
sachant que mes tables et les tags xml ne sont pas les mêmes et j'ai dans chaque table une soixantaine d'attribut du coup je veux pas ecrire les tags élements par élements mais plutôt utiliser un fichier template.
Afficher la suite 

Votre réponse

4 réponses

m4cker 66 Messages postés lundi 22 avril 2013Date d'inscription 17 août 2016 Dernière intervention - Modifié par m4cker le 2/08/2015 à 22:06
0
Utile
Bonjour,

Tu devrais essayer de créer un objet correspondant au données que tu veux récupérer de ta base de donnée. Ensuite il te suffira de serializer ton objet en fichier xml.

Pour mon projet j'ai eu besoin de serializer des objets, je te fais cadeau de ma méthode :


public static class Serialization
{
public static string XmlSerialize(object objectInstance)
        {
            var serializer = new XmlSerializer(objectInstance.GetType());
            var sb = new StringBuilder();

            using (TextWriter writer = new StringWriter(sb))
            {
                serializer.Serialize(writer, objectInstance);
                writer.Dispose();
            }

            string content = sb.ToString();

            return content;
            
        }

        public static T XmlDeserializeFromString<T>(string objectData)
        {
            return (T)XmlDeserializeFromString(objectData, typeof(T));
        }


        public static object XmlDeserializeFromString(string objectData, Type type)
        {
            var serializer = new XmlSerializer(type);
            object result = null;

            if (objectData != null)
            {

                using (TextReader reader = new StringReader(objectData))
                {
                    result = serializer.Deserialize(reader);
                    reader.Dispose();
                }
            }
            return result;
        }
}


Pour faire appel à la serialization, tu fais comme suit :

MyObject o = new MyObject();
/* Tu set tous tes champs de ta base de donnée directement via le constructeurs (ou après au choix) puis tu serializes */
string objectSerialized = Serialization.XmlSerialize(object);

/* Pour déserializer si besoin : */
MyObject o = Serialization.XmlDeserializeFromString<MyObject >(objectSerialized);


Il te suffira d'écrire dans un nouveau fichier xml le résultat de la sérialization (objectSerialized).
arweene 3 Messages postés vendredi 24 juillet 2015Date d'inscription 5 août 2015 Dernière intervention - 5 août 2015 à 11:36
merci pour ta réponse.
j'ai fait un peu comme ta méthode avant de poster mais le problème c'est que mes objets et les tags xml n'ont pas les mêmes noms et j'ai pas besoin de créer tout les tags correspondant à tous les attributs de chaque objet. et le fichier xml que je dois créer contient des tags qui ont des valeurs prédéfinies pour des types d'objet. c'est pour ça que je dois avoir un fichier template qui pourra être paramètrer selon les différents projet qui utiliseront l'application que je développe.
cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention > arweene 3 Messages postés vendredi 24 juillet 2015Date d'inscription 5 août 2015 Dernière intervention - 5 août 2015 à 13:18
Bonjour,

pourquoi ne pas créer une classe de base avec les propriétéss communes et la dériver pour chaque les types de particuliers.

ensuite pour supprimer certain tag utilises les attributs pour la serialisation XML (XMLIgnore) et autres vas voir ici :

http://tlevesque.developpez.com/dotnet/xml-serialization

bonne journée
arweene 3 Messages postés vendredi 24 juillet 2015Date d'inscription 5 août 2015 Dernière intervention > cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 5 août 2015 à 16:07
merci beaucoup!!!!! ça répond exactement à ce que je veux faire!!
Commenter la réponse de m4cker

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.