Requête XPath
La tâche Requête XPath est un outil spécialisé pour extraire des données d'un document XML. Elle prend en entrée un texte XML provenant d'une tâche précédente et applique une expression XPath (Langage de Chemin XML) pour sélectionner des nœuds ou des valeurs spécifiques à l'intérieur de ce document.
Il s'agit d'une tâche fondamentale pour traiter les réponses des appels SOAP, analyser des fichiers de configuration XML ou extraire des informations à partir de n'importe quel ensemble de données structuré au format XML.
Configuration
La configuration se concentre sur la définition de l'expression de recherche et la gestion optionnelle des espaces de noms.
- Contenu XML : le contenu du document XML à partir duquel les données doivent être extraites.
- Expression XPath : Le cœur de la tâche. Dans ce champ, vous devez saisir l'expression XPath qui définit les éléments que vous souhaitez sélectionner du document XML.
- Espaces de noms (facultatif) : Cette section est essentielle pour le traitement des documents XML qui utilisent des espaces de noms, définis via des attributs tels que
xmlnsouxmlns:prefix.
Exemple d'Utilisation (Sans Espace de Noms)
Considérons un fichier XML simple, comme celui d'une bibliothèque, qui n'utilise pas d'espaces de noms :
<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro id="1">
<titolo>Il Signore degli Anelli</titolo>
<autore>J.R.R. Tolkien</autore>
<anno>1954</anno>
</libro>
<libro id="2">
<titolo>1984</titolo>
<autore>George Orwell</autore>
<anno>1949</anno>
</libro>
<libro id="3">
<titolo>Il Nome della Rosa</titolo>
<autore>Umberto Eco</autore>
<anno>1980</anno>
</libro>
</libreria>
Objectif : Extraire uniquement les titres des livres publiés après 1950.
Configuration de la tâche :
- Expression XPath : Saisissez l'expression : /bibliothèque/livre[année > 1950]/titre
- Espaces de noms : Laissez cette section vide.
Résultat attendu : Le paramètre result de la tâche contiendra un nouveau document XML avec les deux titres qui satisfont la condition :
<titolo>Il Signore degli Anelli</titolo>
<titolo>Il Nome della Rosa</titolo>
Exemple d'Utilisation (Avec Espace de Noms)
Bien que l'exemple précédent soit valide pour les XML simples, cette tâche gère également les XML dans lesquels les éléments appartiennent à un espace de noms prédéfini, ce qui nécessite d'associer manuellement un préfixe à l'espace de noms afin de pouvoir utiliser correctement XPath.
Considérez une version de l'XML qui utilise un espace de noms :
<libreria xmlns="http://example.com/libri">
<libro>
<anno>1321</anno>
<titolo>La Divina Commedia</titolo>
<autore>Dante Alighieri</autore>
</libro>
<libro>
<anno>1600</anno>
<titolo>Amleto</titolo>
<autore>William Shakespeare</autore>
</libro>
<libro>
<anno>1980</anno>
<titolo>Il Nome della Rosa</titolo>
<autore>Umberto Eco</autore>
</libro>
</libreria>
Dans ce cas, une expression XPath telle que /bibliothèque/livre/titre échouera, car les nœuds ne s'appellent pas "bibliothèque" ou "livre", mais sont qualifiés par l'espace de noms http://example.com/libri.
Utilisation des Préfixes et des Espaces de Noms
Si nous voulions extraire uniquement le titre du livre publié après 1950, à partir de cet XML avec un espace de noms, nous devons d'abord "apprendre" à la tâche ce que signifie le préfixe que nous utiliserons (par exemple, ns).
Dans la section Espaces de noms, ajoutez une ligne :
| Préfixe | Espace de noms |
|---|---|
| ns | http://example.com/libri |
Maintenant, nous pouvons écrire l'expression XPath en utilisant le préfixe que nous avons enregistré :
//ns:libro[ns:anno > 1950]/ns:titolo
Résultat Attendu
Le paramètre result de la tâche contiendra un nouveau document XML avec le seul titre qui satisfait la condition, en préservant son espace de noms d'origine :
<ns:titolo xmlns:ns="http://example.com/libri">Il Nome della Rosa</ns:titolo>
Si le préfixe n'est pas défini et que l'espace de noms n'est pas défini, le paramètre result contiendra au lieu de cela un message d'erreur : Avertissement : DOMXPath::query(): Préfixe d'espace de noms non défini
Note
Lorsque les éléments XML ont un préfixe explicite :
<ns1:libreria xmlns:ns1="http://example.com/libri"><ns1:libro><ns1:anno>1980</ns1:anno><ns1:titolo>Il Nome della Rosa</ns1:titolo></ns1:libro></ns1:libreria>Il n'est pas nécessaire d'associer manuellement un préfixe à l'espace de noms. En effet, XPath peut utiliser directement le préfixe déjà présent (ns1) pour identifier les éléments, simplifiant ainsi la rédaction des requêtes par rapport aux espaces de noms prédéfinis sans préfixe.
Paramètres de sortie
La Tâche expose un seul Paramètre de sortie principal :
- result: Contient le résultat de la requête XPath ou un message d'erreur.
- Si la requête renvoie une seule valeur de texte simple (par exemple, le contenu d'une balise
<titolo>), le result contiendra directement cette valeur sous forme de chaîne. - Si la requête renvoie un ou plusieurs nœuds XML (structures complexes), le result contiendra un nouveau document XML bien formé contenant uniquement les nœuds trouvés.
- Si la requête renvoie une seule valeur de texte simple (par exemple, le contenu d'une balise
- resultJson: représente le résultat de l'exécution de la tâche au format JSON, incluant des informations générales, des configurations et des détails sur l'exécution.