agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006
-
7 mars 2006 à 16:59
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006
-
13 mars 2006 à 11:44
Bonjour je souhaite créeer un noeud XML de type int , ou boolean c possible ?
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 8 mars 2006 à 09:11
Hello,
ce que tu peux faire, c'est créer un schéma xsd, puis de le passer à xsd.exe (compris avec le SDK), pour te générer une classe.
Tu n'as alors plus qu'à rajouter deux méthodes pour charger, sauver le fichier avec des XmlSerializer, et le tour est joué.
A partir de cette classe, tu peux accéder aux nodes avec leur types.
Depuis que je connais cette technique, je n'utilise plus que ça (ou presque) pour le xml.
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006 9 mars 2006 à 12:40
tu peux m'expliquer un peu mieu cette technique stp SharpMao ?
J'ai bien créee un schéma xsd creer ma classe en auto avec xsd
comme tu me l'a demandé et maintenant je charge comment mon fichier
pour ajouter des valeur a mes champs ?
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006 9 mars 2006 à 12:43
En fait le xsd ne sert qu'a valider un fichier XMl si j'ai bien compris
il faut que je créer un fichier XML a part et de le faire verifier par
le xsd ??
ya pas une doc qui explique la technique pas a pas je m'embrouille un peu avec tout ses termes
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006 10 mars 2006 à 14:50
Merci shrapMao,
j'ai suivi tes conseils et maintenant je sais appliquer un xsd a un
fichier xml donc je peux utiliser n'importe quel type !!!
je serialise le tout avec le XmlSerialiser sauf que j'ai pas fais de methode satic je vais pas tarder a le faire.
J'ai une derniere question :
Je sauvegarde les elements d'une appli dans ce fameux fichier xml typé maintenant
mais lorsque je ferme mon appli je veux pourvoir seulement
modifier les champs ou les propriété que j'ai modifier et pas
serieliser tout mon objet.
Avec cette methode je serialise a chaque fois le tout en écrasant le fichier et recreant mon fichier XML.
ya pas une astuce pour ne changer que les champs que l'on veux dans se fichier sans avoir a l'ecraser totalement ?
ou faut il que j'utilise le xmldocument et que je charge se fichier et que je le modifie.
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 10 mars 2006 à 16:24
Oups,
Excuse.moi, ces derniers temps, je dois faire de VB :-(, et j'ai donc glissé quelques erreurs,
new est en minuscul, bien sur, et il faut mettre tyopeof au lieu de GetType.
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 10 mars 2006 à 16:27
Si tu ne veux pas modifier tous le fichier, il faut utiliser XmlDocument.
Mais ça ne pose en pricipe pas de problèmes de tout recréer, même pour des fichiers volumineux.
Donc il me serialize deux fois l'entete du fichier XML et ça plante l'appli
par contre je suis pas sur que je serialize bien car je créé mes objet
xml seperarement sans utiliser la premiere classe qui elle contier les
deux autres classe dans ses items si j'ai bien compris .
Je procede de cette maniere :
configSettings lc = new configSettings ();
lc._nom="toto";
lc._valide=true;
lc._experience=1;
ScreenNames sn = new ScreenNames();
sn._screenamecontact ="test";
sn._Value="test";
et ensuite je serialise ;
XmlSerializer serializer = new XmlSerializer(typeof(configSettings ));
XmlSerializer serializer2 = new XmlSerializer(typeof(Screenamecontact));
TextWriter writer = new StreamWriter(pathfile,false);
serializer.Serialize(writer, ls);
serializer2.Serialize(writer, t);
writer.Close();
Donc mes objets sont serialiser sans etre placer a l'interieur des balise que je voulais a la base
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006 13 mars 2006 à 11:07
Bonjour,
en fait comme d'habitude c'etait tres simple ça peut servir a quelqu"un il fallait faire :
lc._Items= new object[]{cs};
dans mon cas la serialisation de cette objet ce passe correctement, par
contre j'essaye de serialiser l'autre objet qui est screenName
en faisant
lc._Items= new object[]{sn}; ça ne marche malheureusement j'ai l'exception suivante par le serializer:
_innerException {"Le type Screenamecontact
n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour
spécifier les types qui ne sont pas connus statiquement."
} System.Exception
Alors que dans mon xsd le type est bien un string ... la je vois pas le probleme
Si quelqu'un a un idée ça me serait d'une tres grande aide
agarcia_01
Messages postés51Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention25 août 2006 13 mars 2006 à 11:44
.NET trop fort !!!
En cherchant un peu plus j'ai decouvert un peut tard je l'avoue
lorsque je fais un click droit sur un fichier xsd l'option generer le
groupe de donnée. ET ça me crée ma classe tout seul avec les bonne
option !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! plus beoin de script VB pour
automatiser mes propriété .
donc j'ai un objet complet a manipuler !!!
trop fort j'abandonne les xsd.exe et reprend mon projet avec cette methode plus simple !