Aller au contenu principal
Version: Next

XML DECODE

XML DECODE ( valeurXML ; var4D )

ParamètreTypeDescription
valeurXMLTextValeur de type texte provenant d’une structure XML
var4DField, VariableVariable ou champ 4D devant recevoir la valeur XML convertie

Description

La commande XML DECODE convertit une valeur stockée en tant que chaîne XML en une valeur 4D typée. La conversion est effectuée automatiquement en fonction des règles suivantes :

ValeurExemplesConversion sur système français
numérique8,58.5Réel : 8,5
booléenne1 0 ou vrai fauxBooléen : Vrai/Faux
BLOBDécodage base64
ImagesDécodage base64 + commande BLOB vers image
Dates2009-10-25T01:03:20+01:00!25/10/2009! -> Suppression de la partie heure et du fuseau horaire
Heures2009-10-25T01:03:20+01:00?01:03:20? -> Suppression de la partie date. Attention : prise en compte du fuseau horaire s'il est différent de celui de l'heure locale. Par exemple "2009-10-25T01:03:20+05:00" donnera ?21:03:20? en heure locale UTC+1

Si le type du paramètre var4D n'est pas défini, le type texte est utilisé par défaut.

Exemple

Importation de données depuis un document XML dans lequel les valeurs sont stockées en tant qu’attributs.
Exemple de document XML :

 Repeat
       MyEvent:=SAX Get XML node(DocRef)
 
       Case of
       :(MyEvent=XML Start Element)
          ARRAY TEXT(tAttrNames;0)
          ARRAY TEXT(tAttrValues;0)
          SAX GET XML ELEMENT(DocRef;vName;vPrefix;tAttrNames;tAttrValues)
          If(vName="CD")
             CREATE RECORD([CD])
             For($i;1;Size of array(tAttrNames))
                $attrName:=tAttrNames{$i}
                Case of
                :($attrName="ID_CD")
                   XML DECODE(tAttrValues{$i};[CD]ID_CD)
                :($attrName="Titre")
                   [CD]uvre:=tAttrValues{$i}
                :($attrName="Prix")
                   XML DECODE(tAttrValues{$i};[CD]Prix)
                :($attrName="Date")
                   XML DECODE(tAttrValues{$i};[CD]Date saisie)
                :($attrName="Duree")
                   XML DECODE(tAttrValues{$i};[CD]Durée_totale)
                :($attrName="Double")
                   XML DECODE(tAttrValues{$i};[CD]CD_Double)
                End case
             End for
          End if
       ...
       End case
 Until(MyEvent=XML End Document)

Voir aussi

BASE64 DECODE
BASE64 ENCODE