Probleme écriture d'item xml

Résolu
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009 - 4 mars 2008 à 14:59
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009 - 6 mars 2008 à 14:25
Bonjour,

J'ai un problème d'écriture d'un item dans mon fichier xml. J'ai fait un xsd /c du schéma et dans VS, l'intellisense me donne tous les items du fichier xml. Lors de l'écriture du fichier xml, il me manque un item.

Voici le code C# :
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :l.dagprestaties.nieuwe_prestatielijnen[nb] = new nieuwe_prestatielijn();
l.dagprestaties.nieuwe_prestatielijnen[nb].extern_werkgeversnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].intern_werkgeversnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].intern_werknemersnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].werknemersnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].tewerkstellingsnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].kostenplaats_an = string.Empty; 
l.dagprestaties.nieuwe_prestatielijnen[nb].datum_einde_loonopgave_dt = this.endDate; 
l.dagprestaties.nieuwe_prestatielijnen[nb].volgnr_nr = "0"; 
l.dagprestaties.nieuwe_prestatielijnen[nb].prestatie_datum_dt = dt; 
l.dagprestaties.nieuwe_prestatielijnen[nb].code_nr = "1010";

<!-- END TEMPLATE: bbcode_code -->Le dernier item "uren_fl" est absent du fichier.
Extrait du fichier xml :
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

<!-- END TEMPLATE: bbcode_code -->
<nieuwe_prestatielijnen>
<nieuwe_prestatielijn>
<extern_werkgeversnr_nr>3</extern_werkgeversnr_nr>
0
<werknemersnr_nr>0</werknemersnr_nr>
0
<tewerkstellingsnr_nr>0</tewerkstellingsnr_nr>
<kostenplaats_an />
<datum_einde_loonopgave_dt>2008-02-29</datum_einde_loonopgave_dt>
2008-02-01


<volgnr_nr>0</volgnr_nr>
<code_nr>1010</code_nr>
<loonextentie_nr>0</loonextentie_nr>

</nieuwe_prestatielijn>
<nieuwe_prestatielijn>
<extern_werkgeversnr_nr>3</extern_werkgeversnr_nr>
0
<werknemersnr_nr>0</werknemersnr_nr>
0
<tewerkstellingsnr_nr>0</tewerkstellingsnr_nr>
<kostenplaats_an />
<datum_einde_loonopgave_dt>2008-02-29</datum_einde_loonopgave_dt>
2008-02-02


<volgnr_nr>0</volgnr_nr>
<code_nr>1010</code_nr>
<loonextentie_nr>0</loonextentie_nr>

</nieuwe_prestatielijn>
</nieuwe_prestatielijnen>

Quelqu'un peut-il me dire pourquoi le "uren_fl" n'est pas écrit dans le fichier???

Merci

11 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
4 mars 2008 à 17:38
Non il n'y a pas de tags ou autre moyen d'insérer du code dans le forum, il faut faire la mise en page "à la main".

Dans ton premier message, tu donne un bout de code C#, et dans ce bout de code, il n'y a aucune référence a "uren_fl"...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
4 mars 2008 à 16:31
La mise en page de ton message n'est pas top, mais dans l'extrait de code C# que tu donnes, je ne vois nul part de référence à "uren_fl".

D'ailleur il sert à quoi ce code? remplir l'objet avant de l'écrire? ou c'est lors de la lecture?

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
4 mars 2008 à 17:28
Dsl pour la mise en page, mais comment insérer des bouts de code, existe-t-il des tags ou autres??? (Je suis novice sur le forum )

En fait le but du code est de garnir l'objet avant de l'écrire. La référence à "uren_fl" est bien présente dans le code.

Merci.
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
4 mars 2008 à 17:48
l.dagprestaties.nieuwe_prestatielijnen[nb] =




new



nieuwe_prestatielijn
();l.dagprestaties.nieuwe_prestatielijnen[nb].extern_werkgeversnr_nr = "0"


;l.dagprestaties.nieuwe_prestatielijnen[nb].intern_werkgeversnr_nr =


"0"
;l.dagprestaties.nieuwe_prestatielijnen[nb].intern_werknemersnr_nr =


"0"
;l.dagprestaties.nieuwe_prestatielijnen[nb].werknemersnr_nr =


"0"
;l.dagprestaties.nieuwe_prestatielijnen[nb].tewerkstellingsnr_nr =


"0"
;l.dagprestaties.nieuwe_prestatielijnen[nb].kostenplaats_an =


string
.Empty;l.dagprestaties.nieuwe_prestatielijnen[nb].datum_einde_loonopgave_dt =


this
.endDate;l.dagprestaties.nieuwe_prestatielijnen[nb].volgnr_nr =


"0"
;l.dagprestaties.nieuwe_prestatielijnen[nb].prestatie_datum_dt = dt;

l.dagprestaties.nieuwe_prestatielijnen[nb].code_nr = "0";

l.dagprestaties.nieuwe_prestatielijnen[nb].loonextentie_nr =


sbyte
.Parse(

"0"
);l.dagprestaties.nieuwe_prestatielijnen[nb].premie_extentie_an =


string
.Empty;l.dagprestaties.nieuwe_prestatielijnen[nb].uren_fl = decimal
.Parse(
"0")


;

Voila le code c#, en espérant qu'il soit bien formatté à l'écran, avec la référence à "uren_fl".

Est-ce plus clair??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
4 mars 2008 à 17:50
C'est quoi tous ces <CR> intempestifs
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
4 mars 2008 à 18:04
Et ensuite, comment sérialises tu ton objet en xml ?
Que vaut "l.dagprestaties.nieuwe_prestatielijnen[nb].uren_fl"
si tu regardes avec le debugger après l'avoir assigné ?
Est-ce que par hasard le champ "uren_fl" ne serait pas taggé comme [NonSerialized] dans la définition de la classe ?

(question bonus pour ma culture : c'est en quelle langue tout ça ?)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
5 mars 2008 à 09:50
Code de sérialisation :
XmlSerializer xs = new XmlSerializer(typeof(loonverwerking));
TextWriter tw = new StreamWriter("prestaties.xml");
xs.Serialize(tw, l);
tw.Close();

Le champ "uren_fl" n'est pas taggé du tout. C'est peut-être de là que vient le problème?

(Bonus : c'est du néerlandais, une des trois langues nationales en Belgique.)
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
5 mars 2008 à 09:55
Concernant : l.dagprestaties.nieuwe_prestatielijnen[nb].uren_fl; la valeur, imprimée dans la console, est correcte.

Pas encore bien réveillé ce matin.
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
5 mars 2008 à 10:07
>> Le champ "uren_fl" n'est pas taggé du tout. C'est peut-être de là que vient le problème?

Non pas forcément. La classe "loonverwerking" qui doit contenir ce champ doit être Taggée [Serialized] (ainsi que les classes "composites") donc ca devrait être bon. (le tag [NonSerialized] dont je te parlais signifiant justement : on ne sérialise pas cet objet en particulier, ce qui aurait solutionné facilement ton problème )

Du coup là je suis à cours d'idée...

Tu fais tes tets en 'écrasant' à chaque dois le fichier de sortie ? si oui, essaye de le supprimer avant de tester (juste pour être sur qu'il est bien écrit, et qu'il est bien écrit au bon endroit...)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
5 mars 2008 à 10:20
Justement, afin d'être certain que ce soit un nouveau fichier, je le supprime du répertoire à chaque test.

Et là je ne vois aucune autre piste ni aucun début de solution.
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
6 mars 2008 à 14:25
Apparamment, le problème vient du fait que le champ en question est un décimal.

Du moins c'est la seule explication que je vois encore. Sinon
0
Rejoignez-nous