Probleme écriture d'item xml [Résolu]

Signaler
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009
-
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009
-
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

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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.
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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??
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

C'est quoi tous ces <CR> intempestifs
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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.)
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

Concernant : l.dagprestaties.nieuwe_prestatielijnen[nb].uren_fl; la valeur, imprimée dans la console, est correcte.

Pas encore bien réveillé ce matin.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
>> 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
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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.
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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