Aller au contenu principal
Version : 21 R3

XML DECODE

XML DECODE ( valeurXML ; var4D )

ParamètreTypeDescription
valeurXMLText→Valeur de type texte provenant d’une structure XML
var4DField, Variable←Variable ou champ 4D devant recevoir la valeur XML convertie
Historique
VersionChangements
12Créé

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érique<Prix>8,5</Prix><Prix>8.5</Prix>Réel : 8,5
booléenne<Double>1</Double> <Double>0</Double> ou <Double>vrai</Double> <Double>faux</Double>Boolé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 :

<CD Date="2003-01-01T00:00:00Z" 
Description="This double CD reissued by EMI in 1995 combines 4 Stabat mater hymns. One by Rossini interpreted by the Berlin Symphony Orchestra, directed by Karl Forster. Followed by a work of Verdi, by the Philharmonic Orchestra, directed by Carlo Maria Giulini. On the second CD, you will find Francis Poulenc interpreted by Régine Crespin. This compilation ends with a little-known version, that of the Polish composer Karol Szymanowski. Polish National Radio Symphony Orchestra directed by Antoni Wit"
Double="true"
Duration="7246"
Type="Sacred music"
CD_ID="5" Performer="Various"
Price="8.5"
Title="4 Stabat mater"/>
 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

Propriétés​

Numéro de commande1091
Thread safeyes