PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → ialiser Classe : Balise + Texte.
ialiser Classe : Balise + Texte.
Débuté par LM Concept, 16 déc. 2025 12:34 - 4 réponses
Membre enregistré
397 messages
Posté le 16 décembre 2025 - 12:34
Hello à tous,
J'avance bien dans la création de mes classe,
mais j'ai un cas que je n'arrive pas à résoudre !
Une Balise + un Texte.

Exemple de ce que j'ai besoin :
<cRegion>
<Pays codePays="FR">FRANCE</Pays>
</cRegion>


J'ai fait cela :
cPaysType est une Classe
m_sCodePays est une chaîne <xmlAttribut, Sérialise="codePays">
m_sPays est une chaîne // J'ai pas indique de sérialise
FIN

cRegion est une Classe
m_clPays est un cPaysType <Sérialise ="Pays">
FIN

UneRegion est un cRegion

UneRegion.m_clPays.m_sCodePays = "FR"
UneRegion.m_clPays.m_sPays = "FRANCE"

bufBuff est un Buffer
Sérialise(UneRegion,bufBuff,psdXMLAgrégé)


Je me retrouve avec
<cRegion>
<Pays codePays="FR">
<m_sPays>FRANCE</m_sPays>
</Pays>
</cRegion>


Bien que pas sérialisé le "m_sPays " est intégré au XML.
Alors je peux le supprimer avec un "Remplace", mais bon ca fait bricolage !!
En plus effacer après un "Serialise" pourquoi pas mais dans l'autre sens c'est à dire "Déserialise" j'ai pas essayé mais a mon avis ca fonctionne pas.
J'ai mal configuré mes classes ?

Merci de vos lumières

BON DEV
Membre enregistré
4 323 messages
Posté le 16 décembre 2025 - 19:33
Bonjour,
LM Concept a écrit :
Bien que pas sérialisé le "m_sPays " est intégré au XML.

L'attribut d'extension sérialise, n'indique pas que le membre est ou non sérialisé, il indique que dans la sérialisation, ce n'est pas le nom du membre (défini dans la classe) qu'il faut prendre en compte, mais le nom que l'on passe.
m_sPays est une chaîne <Sérialise="">

pourrait peut être faire l'affaire

Rappel :
Pour ne pas sérialiser un membre, il faut utiliser <sérialise=Faux>
--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 16 décembre 2025 - 19:57
Membre enregistré
397 messages
Posté le 17 décembre 2025 - 11:01
Merci pour le message,
Malheureusement, le <Sérialise=""> il me créé la balise vide, et du coup le XML est en erreur.
<Pays codePays="FR">
<>FRANCE</>
</Pays>

J'ai essayé plein de choses, <mapping = "*"> , <Sérialise="*"> <Sérialise="."> <Sérialise="valeur"> etc ....
Rien n'y fait, j'ai demandé aussi au support gratuit, mais il me réponde de passer par l'assistant payant!
J'ai bien l'impression que Windev ne sais pas gérer ce cas là.
Il y a bien la solution :
bufBuff = Remplace(bufBuff , "<m_sPays>", "")
bufBuff = Remplace(bufBuff , "</m_sPays>", "")

mais j'aurais toujours le problème du "Désérialise"

Je vais donc être obligé d'abandonner le "Serialise /Deserialise " et coder le XML qui parfois fait plus de 1000 lignes, manuellement!

Maintenant si une solution existe je suis preneur !

Merci,
BON DEV
Membre enregistré
63 messages
Posté le 17 décembre 2025 - 16:19
LM Concept a écrit :
Hello à tous,
J'avance bien dans la création de mes classe,
mais j'ai un cas que je n'arrive pas à résoudre !
Une Balise + un Texte.

Exemple de ce que j'ai besoin :
<cRegion>
<Pays codePays="FR">FRANCE</Pays>
</cRegion>



Bonjour, malheureusement je ne crois pas que ce soit possible. il manque pas mal de chose au niveau de la sérialisation/déserialisation dans le framework.
Là dans votre cas il manque l'équivalent de l'attribut [XmlText] en c#, c'est dommage ils ont fait xmlAttribut mais pas xmlText...
Message modifié, 17 décembre 2025 - 16:20
Membre enregistré
397 messages
Posté le 17 décembre 2025 - 16:51
Oui j'ai fait pas mal de recherche depuis quelques jours, j'ai même demandé à Claude et ChatGTP en plein désespoir ;) !!
Et en effet il semble que ce ne soit pas complet pour la Sérialisation / Deserialisation !

Tant pis ! Je vais faire manuellement, Développer 10 Fois plus vite, mais plus longtemps !
Merci.

BON DEV