ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / XML file functions
  • Recherche et parcours de document XML
  • Fonctions XML et threads
  • Suppression lors d'une recherche
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Lance une recherche dans un document XML. Cette recherche peut être annulée par la fonction XMLAnnuleRecherche.
Remarque : Pour effectuer une requête XPath, utilisez la fonction XMLExécuteXPath.
Exemple
// Recherche à partir de la position courante
XMLRecherche("DocXML", "pri", XMLBalise + XMLSousElément, XMLCommencePar)
TANTQUE XMLTrouve("DocXML") = Vrai
Info("Balise trouvée " + XMLNomElément("DocXML"))
// Elément suivant dans la recherche
XMLSuivant("DocXML")
FIN
XMLAnnuleRecherche("DocXML")
// Positionne à la racine du document
XMLRacine("DocXML")
// Recherche à l'identique à partir du début du document
XMLRecherche("DocXML", "prix", XMLBalise + XMLContinue, XMLExact)
TANTQUE XMLTrouve("DocXML") = Vrai
Info("Balise trouvée " + XMLNomElément("DocXML"))
// Elément suivant dans la recherche
XMLSuivant("DocXML")
FIN
XMLAnnuleRecherche("DocXML")
Syntaxe
<Résultat> = XMLRecherche(<Document XML> , <Valeur recherchée> [, <Type de parcours> [, <Options de recherche>]])
<Résultat> : Booléen
  • Vrai si l'élément recherché est trouvé,
  • Faux dans le cas contraire.
<Document XML> : Chaîne de caractères
Nom du document XML manipulé. Ce document contient le code XML à analyser et a été créé avec la fonction XMLDocument.
<Valeur recherchée> : Chaîne de caractères (avec guillemet) ou mot-clé NULL
Valeur recherchée dans le document XML.
Si ce paramètre est égal à NULL, toutes les balises et attributs du document XML seront lues à partir de l'élément courant, en fonction des paramètres de parcours.
<Type de parcours> : Constante (ou combinaison de constantes) optionnelle
Type de parcours à réaliser :
XMLAttributRecherche sur les noms d'attributs.
XMLBaliseRecherche sur les noms des balises.
XMLContinue
  • Combinée avec XMLBalise, XMLAttribut ou XMLValeur, continue la recherche dans la suite du document en remontant dans les niveaux de l'arborescence (si nécessaire).
  • Combinée avec XMLSousElément, continue la recherche dans la suite du document, en remontant et en redescendant dans les niveaux de l'arborescence.
XMLElément
(Valeur par défaut)
Recherche sur les noms de balises et d'attributs (équivalent à la combinaison XMLBalise + XMLAttribut).
XMLNiveauCourantRecherche uniquement dans le niveau courant de l'arborescence.
XMLSousElémentRecherche également dans toutes les balises filles. Doit être combiné avec XMLBalise, XMLAttribut ou XMLValeur.
XMLValeurRecherche sur les valeurs des balises et des attributs.
<Options de recherche> : Constante (ou combinaison de constantes) optionnelle
Options de recherche à prendre en compte :
XMLAvecNamespaceRecherche sur les éléments contenant un namespace.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
XMLCommenceParRecherche sur les éléments commençant par la valeur recherchée.
XMLContientRecherche sur les éléments contenant la valeur recherchée.
XMLExact
(valeur par défaut)
Recherche à l'identique et sensible à la casse.
XMLIgnoreLaCasseRecherche sans tenir compte de la casse de la balise. Peut être combiné avec XMLContient, XMLCommencePar ou XMLExact.
Remarques

Recherche et parcours de document XML

La fonction XMLRecherche débute la recherche à partir de la position courante dans le document XML. Pour effectuer une recherche dans tout le document, il est conseillé d'utiliser la fonction XMLRacine avant d'utiliser la fonction XMLRecherche.
La fonction XMLRecherche affecte le parcours en cours. Les fonctions XMLSuivant et XMLPrécédent se positionneront sur les éléments suivants et précédents correspondants à la recherche. Si la recherche échoue (aucun élément trouvé), la position en cours avant la recherche est conservée.
Pour annuler la recherche, utilisez la fonction XMLAnnuleRecherche. De plus, les fonctions XMLPremier, XMLDernier, XMLRacine, XMLParent et XMLFils annulent la recherche en cours.

Fonctions XML et threads

Si votre application utilise des threads, le document XML est partagé entre tous ces threads. Pour plus de détails sur la gestion des threads, consultez Gestion des threads.
Si la position courante dans un document XML est modifiée dans un thread, la position courante dans ce document XML est modifiée pour tous les threads.

Suppression lors d'une recherche

La fonction XMLSupprime utilisée lors d'une recherche annule la recherche.
Exemple à ne pas faire (ce code ne fonctionne pas) :
// Positionne à la racine du document
XMLRacine(:m_sNomDoc)
// Recherche tous les "txsr" à partir de la racine pour les supprimer
XMLRecherche(:m_sNomDoc, CParagraphe::CST_TAG , XMLBalise + XMLSousElément + XMLContinue, XMLExact)
TANTQUE XMLTrouve(:m_sNomDoc) = Vrai
XMLSupprime(:m_sNomDoc)
// Elément suivant dans la recherche
XMLSuivant(:m_sNomDoc)
FIN
XMLAnnuleRecherche(:m_sNomDoc)
Le code à utiliser est le suivant :
// Suppression lors d'une recherche
// Positionne à la racine du document
XMLRacine(:m_sNomDoc)
BOUCLE
// Recherche tous les "txsr" à partir de la racine pour les supprimer
XMLRecherche(:m_sNomDoc, CParagraphe::CST_TAG , ...
  XMLBalise + XMLSousElément + XMLContinue, XMLExact)
SI XMLTrouve(:m_sNomDoc) = Vrai ALORS
XMLSupprime (:m_sNomDoc)
SINON
SORTIR
FIN
FIN
Composante : wd290xml.dll
Minimum version required
  • Version 9
Comments
Video XmlFind
https://youtu.be/v3TCiIa6ZbU

https://windevdesenvolvimento.blogspot.com/2019/04/dicas-2079-windevxml22lerduplicatasnotas.html

//
EDT_XML=fLoadText(EDT_procura_xml)// estou lendo o conteudo do xml, que encontramos
XMLDocument("xml_notas",EDT_XML)
XMLFind("xml_notas",Null,XMLContinue+XMLChildItem)
TableDeleteAll(TABLE_DUPLICATA)
nome_tag is string=""
sNumero_duplicata is string=""
WHILE XMLFound("xml_notas")
SWITCH XMLElementType("xml_notas")
CASE XMLTag :
nome_tag = XMLElementName("xml_notas")
SWITCH nome_tag
CASE "nDup"
sNumero_duplicata=(XMLData("xml_notas"))
OTHER CASE
END
IF sValor_duplicata<>"" THEN
TableAddLine(TABLE_DUPLICATA,sNumero_duplicata,sData_vencimento,sValor_duplicata)
sNumero_duplicata=""
END
END
XMLNext("xml_notas")
END
amarildo
19 Apr. 2019
LER ITEM XML
TableDeleteAll(TABLE_NSU)
sNome_tag is string=""
sNome_Atributo is string=""
s_meu_xml is string=EDT_xml //s_meu_xml is string=fLoadText(s_xml_documento)
XMLDocument("XML",s_meu_xml)
EDT_tpAmb=XMLRead("XML","/retDistDFeInt/tpAmb")
XMLFind("XML",Null,XMLContinue+XMLChildItem)
WHILE XMLFound("XML")
SWITCH XMLElementType("XML")
CASE XMLTag :
sNome_tag = XMLElementName("XML")
CASE XMLAttribute
IF sNome_tag="docZip" THEN
sNome_Atributo = XMLData("XML")
IF IsNumeric(sNome_Atributo) THEN
TableAddLine(TABLE_NSU,sNome_Atributo)
END
END
END
XMLNext("XML")
END
XMLClose("XML")

// BLOG COM VIDEO E EXEMPLO

http://windevdesenvolvimento.blogspot.com.br/2017/06/aula-1187-windev-010-xml-leritensxml.html

https://www.youtube.com/watch?v=8PcM8hBEM0w



De matos
24 Jun. 2017

Last update: 06/23/2022

Send a report | Local help