Sous flash j'ai une classe d'une vingtaine de ligne qui me permet de
convertir un XML en JSON. J'obtiens donc un objet avec un ensemble de
propriétés et de collection (sans typage, c'est du string).
Est-il possible en C# d'obtenir le même genre de choses en dynamique
(puisque en statique je sais qu'on peux le faire) c'est à dire de donner
un fichier XML à un méthode X et d'obtenir un objet correspondant que
l'on peux utiliser...
Bon si il faut passer un XSD en option pour typer les données c'est pas
un mal...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Musso
llopht a exprimé avec précision :
Salut à tous,
Sous flash j'ai une classe d'une vingtaine de ligne qui me permet de convertir un XML en JSON. J'obtiens donc un objet avec un ensemble de propriétés et de collection (sans typage, c'est du string).
Est-il possible en C# d'obtenir le même genre de choses en dynamique (puisque en statique je sais qu'on peux le faire) c'est à dire de donner un fichier XML à un méthode X et d'obtenir un objet correspondant que l'on peux utiliser...
Bon si il faut passer un XSD en option pour typer les données c'est pas un mal...
On transforme : object mesContacts = xmlToObh("Fichier.xml");
mesContacts[0].prenom pour obtenir le prénom du premier contact
Alors y a un truc du genre d'intégrer dans C# ?
Merci
Jérôme
Bonjour Jérôme,
Vu que le C# est un langage dit statique, tu ne peux pourra pas écrire mesContacts[0].prenom sans que le compilateur ne sache ce que c'est.
La meilleure méthode est d'utiliser une API XML comme Linq To XML. Grâce aux types anonymes tu peux écrire la chose suivante :
XDocument doc = XDocument.Load("contacts.xml");
var contacts = from contact in doc.Descendants("contact") select new { Prenom = (string)contact.Element("prenom"), Nom = (string)contact.Element("nom"), Age = (string)contact.Element("age") };
foreach (var contact in contacts) { Console.WriteLine(contact.Nom); Console.WriteLine(contact.Prenom); Console.WriteLine(contact.Age); }
Ce qui se rapproche grandement de ce que tu veux, seulement c'est du statique. Avec la variable "contacts", tu peux écrire :
contacts.ToArray()[0].Prenom;
Et cela compilera sans problême.
-- Paul Musso
llopht a exprimé avec précision :
Salut à tous,
Sous flash j'ai une classe d'une vingtaine de ligne qui me permet de
convertir un XML en JSON. J'obtiens donc un objet avec un ensemble de
propriétés et de collection (sans typage, c'est du string).
Est-il possible en C# d'obtenir le même genre de choses en dynamique (puisque
en statique je sais qu'on peux le faire) c'est à dire de donner un fichier
XML à un méthode X et d'obtenir un objet correspondant que l'on peux
utiliser...
Bon si il faut passer un XSD en option pour typer les données c'est pas un
mal...
On transforme :
object mesContacts = xmlToObh("Fichier.xml");
mesContacts[0].prenom pour obtenir le prénom du premier contact
Alors y a un truc du genre d'intégrer dans C# ?
Merci
Jérôme
Bonjour Jérôme,
Vu que le C# est un langage dit statique, tu ne peux pourra pas écrire
mesContacts[0].prenom sans que le compilateur ne sache ce que c'est.
La meilleure méthode est d'utiliser une API XML comme Linq To XML.
Grâce aux types anonymes tu peux écrire la chose suivante :
XDocument doc = XDocument.Load("contacts.xml");
var contacts = from contact in doc.Descendants("contact")
select new
{
Prenom = (string)contact.Element("prenom"),
Nom = (string)contact.Element("nom"),
Age = (string)contact.Element("age")
};
foreach (var contact in contacts)
{
Console.WriteLine(contact.Nom);
Console.WriteLine(contact.Prenom);
Console.WriteLine(contact.Age);
}
Ce qui se rapproche grandement de ce que tu veux, seulement c'est du
statique. Avec la variable "contacts", tu peux écrire :
Sous flash j'ai une classe d'une vingtaine de ligne qui me permet de convertir un XML en JSON. J'obtiens donc un objet avec un ensemble de propriétés et de collection (sans typage, c'est du string).
Est-il possible en C# d'obtenir le même genre de choses en dynamique (puisque en statique je sais qu'on peux le faire) c'est à dire de donner un fichier XML à un méthode X et d'obtenir un objet correspondant que l'on peux utiliser...
Bon si il faut passer un XSD en option pour typer les données c'est pas un mal...
On transforme : object mesContacts = xmlToObh("Fichier.xml");
mesContacts[0].prenom pour obtenir le prénom du premier contact
Alors y a un truc du genre d'intégrer dans C# ?
Merci
Jérôme
Bonjour Jérôme,
Vu que le C# est un langage dit statique, tu ne peux pourra pas écrire mesContacts[0].prenom sans que le compilateur ne sache ce que c'est.
La meilleure méthode est d'utiliser une API XML comme Linq To XML. Grâce aux types anonymes tu peux écrire la chose suivante :
XDocument doc = XDocument.Load("contacts.xml");
var contacts = from contact in doc.Descendants("contact") select new { Prenom = (string)contact.Element("prenom"), Nom = (string)contact.Element("nom"), Age = (string)contact.Element("age") };
foreach (var contact in contacts) { Console.WriteLine(contact.Nom); Console.WriteLine(contact.Prenom); Console.WriteLine(contact.Age); }
Ce qui se rapproche grandement de ce que tu veux, seulement c'est du statique. Avec la variable "contacts", tu peux écrire :