Aller au contenu principal
Version: Next

DOM Find XML element

DOM Find XML element ( refElément ; xPath {; tabRefEléments} ) -> Résultat

ParamètreTypeDescription
refElémentChaîne🡒Référence d’élément XML
xPathTexte🡒Chemin XPath de l’élément à chercher
tabRefElémentsTableau chaîne🡘Liste des références d’éléments trouvés (le cas échéant)
RésultatChaîne🡐Référence de l’élément trouvé (le cas échéant)

Description

La commande DOM Find XML element vous permet de rechercher des éléments XML spécifiques dans une structure XML. La recherche débute à l’élément désigné par le paramètre refElément.

Le noeud XML à chercher est défini et exprimé en notation XPath à l'aide du paramètre xPath (pour plus d'informations, reportez-vous à la section Utilisation de la notation XPath section). Les expressions de chemin suivantes sont prises en charge :

ExpressionAction
nodenameSélectionne tous les noeuds enfants du noeud contextuel avec le nom "nodename"
/Sélectionne des noeuds à partir du noeud racine (chemin absolu)
//Sélectionne les noeuds du document à partir du noeud courant qui correspond à la sélection, quelle que soit leur emplacement
@Sélectionne les attributs
.Sélectionne le noeud courant
..Sélectionne le parent du noeud courant
*Sélectionne tous les éléments enfants du noeud contextuel
@*Sélectionne tous les attributs du noeud contextuel
text()Sélectionne tous les enfants du noeud de type texte du noeud contextuel
node()Sélectionne tous les enfants de l'élément du noeud contextuel, quel que soit le type de noeud
local-name()Retourne une chaîne représentant le nom local du premier noeud d'un ensemble de noeuds
para[1]Sélectionne le premier para enfant du noeud contextuel
para[last()]Sélectionne le dernier para enfant du noeud contextuel
chapitre[titre="Introduction"]Sélectionne les chapitre enfants du noeud contextuel ayant un ou plusieurs titre enfant(s) avec la chaîne-valeur équivalente à Introduction
chapitre[titre]Sélectionne les chapitre enfants du noeud contextuel ayant un ou plusieurs titre enfant(s)
para[@type="attention"]Sélectionne tous les para enfants du noeud contextuel dont l'attribut est "type" et la valeur est "warning"
para[@type="warning"][5]Sélectionne le cinquième para enfant du noeud contextuel dont l'attribut est "type" et la valeur est "warning"
para[5][@type="warning"]Sélectionne le cinquième para enfant du noeud contextuel si cet enfant a un attribut "type" et une valeur égale à "warning"
para[contains(@type,'bg')]Sélectionne tous les para enfants du noeud contextuel ayant un attribut "type"contenant la chaîne "bg"
//titre | //prixSélectionne tous les éléments titre et prix du document

Note de compatibilité : A compter de v18 R3, le niveau de conformité de l'implémentation de XPath dans 4D est nettement plus élevé et permet la prise en charge des expressions ci-dessus. Pour des raisons de compatibilité, l'implémentation antérieure non standard est maintenue par défaut dans les bases converties. Si vous souhaitez obtenir les fonctionnalités avancées dans vos bases converties, vous devez cocher l'option de compatibilité Utiliser XPath standard de la *Page Compatibilité.

Note : Les requêtes sont sensibles à la casse.

La commande retourne la référence XML de(s) élément(s) trouvé(s). Lorsque le tableau chaîne tabRefEléments est passé, la commande le remplit avec la liste des références XML trouvées. Dans ce cas, la commande retourne en résultat le premier élément du tableau tabRefEléments. Ce paramètre est utile lorsque plusieurs éléments de même nom existent à l’emplacement désigné par le paramètre xPath.

Exemple 1

Soit la structure XML suivante :

  Harry Potter  29.99  Apprendre le XML  39.95

Cet exemple permet de rechercher rapidement un élément XML et d’afficher sa valeur :

 vRefElem:=DOM Parse XML source("books.xml")
 vTrouvé:=DOM Find XML element(vRefElem;"book[2]/title") // chemin relatif du noeud courant
 DOM GET XML ELEMENT VALUE(vTrouvé;valeur)
 ALERT("La valeur de l’élément est : \""+valeur+"\"") // Apprendre le XML

La même recherche peut également être effectuée ainsi :

 vRefElem:=DOM Parse XML source("books.xml")
 vTrouvé:=DOM Find XML element(vRefElem;"book[2]/title") // chemin relatif du noeud courant
 DOM GET XML ELEMENT VALUE(vTrouvé;valeur)
 ALERT("La valeur de l’élément est : \""+valeur+"\"") // Apprendre le XML

Exemple 2

Soit la structure XML suivante :

         aaa      bbb      ccc   

Le code suivant permet de récupérer la référence de chaque élément Elem2 dans le tableau tAtrouvés :

 vRefElem:=DOM Parse XML source("exemple.xml")
 ARRAY TEXT(tAtrouves;0)
 vTrouvé:=DOM Find XML element(vRefElem;"/Racine/Elem1/Elem2";tAtrouvés)

Exemple 3

Vous souhaitez sélectionner tous les éléments "rect" avec des attributs "class" contenant la chaîne "bgcontainer" :

 $node:=DOM Find XML element($root;" //rect[contains(@class,'bgcontainer')")

Variables et ensembles système

Si la commande a été exécutée correctement, la variable système OK prend la valeur 1, sinon elle prend la valeur 0 et une erreur est générée.

Gestion des erreurs

Une erreur est générée lorsque :

  • la référence de l’élément n’est pas valide
  • le chemin xPath passé n’est pas valide.

Voir aussi

DOM Count XML elements
DOM Create XML element