XPath (xmldoc)
De Wiki1000
(Différences entre les versions)
| (Une révision intermédiaire par un utilisateur est masquée) | |||
| Ligne 13 : | Ligne 13 : | ||
Exemple: | Exemple: | ||
| + | |||
| + | '''Récupérer le texte d'un élément''' | ||
| + | <source lang="xml"> | ||
| + | <?xml version="1.0" encoding="UTF-8"?> | ||
| + | <octopush> | ||
| + | <error_code>000</error_code> | ||
| + | <cost>0.069</cost> | ||
| + | <balance>0</balance> | ||
| + | <ticket>XXXSIMULATIONXXX</ticket> | ||
| + | <sending_date>1378200246</sending_date> | ||
| + | <number_of_sendings>1</number_of_sendings> | ||
| + | <currency_code>€</currency_code> | ||
| + | <successs> | ||
| + | <success> | ||
| + | <recipient>+336.......</recipient> | ||
| + | <country_code>XXX</country_code> | ||
| + | <cost>0.069</cost> | ||
| + | </success> | ||
| + | </successs> | ||
| + | <failures/> | ||
| + | </octopush> | ||
| + | </source> | ||
| + | |||
| + | <source lang=delphi> | ||
| + | procedure getOctoPushTicket(); | ||
| + | var doc:TxmlDocument; | ||
| + | begin | ||
| + | doc := TxmlDocument.Create(nil); | ||
| + | doc.loadFromFile('c:\ticket.xml'); | ||
| + | showmessage(doc.xPath('//octopush/ticket').AsString); | ||
| + | end; | ||
| + | </source> | ||
'''Utilisation du résultat comme un ensemble d'éléments.''' | '''Utilisation du résultat comme un ensemble d'éléments.''' | ||
| Ligne 54 : | Ligne 86 : | ||
end; | end; | ||
</source> | </source> | ||
| + | |||
| + | '''Utilisation comme un itérateur de noeuds''' | ||
| + | <source lang='delphi'> | ||
| + | procedure foo(doc:TxmlDocument); | ||
| + | var elt:TxmlItem; idx:Integer; node:TxmlNode; | ||
| + | begin | ||
| + | doc := TxmlDocument.Create(nil); | ||
| + | doc.loadFromFile('c:\test.xml'); | ||
| + | // | ||
| + | foreach node in doc.XPath('//C') do | ||
| + | showMessage(node.QName); | ||
| + | end; | ||
| + | </source> | ||
| + | |||
Ces exemples retournent tous les éléments "C" du document | Ces exemples retournent tous les éléments "C" du document | ||
Version actuelle en date du 3 septembre 2013 à 10:45
function XPath(const iExpression:string):TxmlPath;
Cette fonction exécute une expression XPath et retourne un résultat pouvant être un ensemble de noeud, une valeur numérique, une valeur chaîne ou une valeur logique.
| Result | Un objet TxmlPath contenant le résultat. |
| iExpression | Expression XPath a exécuter. |
Exemple:
Récupérer le texte d'un élément
<?xml version="1.0" encoding="UTF-8"?> <octopush> <error_code>000</error_code> <cost>0.069</cost> <balance>0</balance> <ticket>XXXSIMULATIONXXX</ticket> <sending_date>1378200246</sending_date> <number_of_sendings>1</number_of_sendings> <currency_code>€</currency_code> <successs> <success> <recipient>+336.......</recipient> <country_code>XXX</country_code> <cost>0.069</cost> </success> </successs> <failures/> </octopush>
procedure getOctoPushTicket(); var doc:TxmlDocument; begin doc := TxmlDocument.Create(nil); doc.loadFromFile('c:\ticket.xml'); showmessage(doc.xPath('//octopush/ticket').AsString); end;
Utilisation du résultat comme un ensemble d'éléments.
procedure foo(doc:TxmlDocument); var xpt:TxmlPath; idx:Integer; elt:TxmlItem; begin doc := TxmlDocument.Create(nil); doc.loadFromFile('c:\test.xml'); // xpt := doc.xPath('//C'); for idx:=0 to xpt.Count-1 do showMessage(xpt.Items[idx].GetAttribute('Id','')); end;
Utilisation du résultat comme un itérateur d'élément.
procedure foo(doc:TxmlDocument); var elt:TxmlItem; idx:Integer; elt:TxmlItem; begin doc := TxmlDocument.Create(nil); doc.loadFromFile('c:\test.xml'); // foreach elt in doc.XPath('//C') do showMessage(xpt.Items[idx].GetAttribute('Id','')); end;
Utilisation des noeuds du résultat.
procedure foo(doc:TxmlDocument); var xpt:TxmlPath; idx:Integer; elt:TxmlItem; begin doc := TxmlDocument.Create(nil); doc.loadFromFile('c:\test.xml'); // xpt := doc.xPath('//C'); for idx:=0 to xpt.Count-1 do showMessage(xpt.Nodes[idx].QName); end;
Utilisation comme un itérateur de noeuds
procedure foo(doc:TxmlDocument); var elt:TxmlItem; idx:Integer; node:TxmlNode; begin doc := TxmlDocument.Create(nil); doc.loadFromFile('c:\test.xml'); // foreach node in doc.XPath('//C') do showMessage(node.QName); end;
Ces exemples retournent tous les éléments "C" du document
<A> <B> <C id="11"/> <C id="12"/> <C id="13"/> </B> <B> <C id="21"/> <C id="22"/> <C id="23"/> </B> </A>
Les six éléments C sont retournés.
Voir aussi:
| Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |