|
|
|
|
- Exemple d'utilisation de la fonction XMLOuvreLecteur
XMLOuvreLecteur (Exemple)
Exemple d'utilisation de la fonction XMLOuvreLecteur Cet exemple importe un gros fichier XML dans une table de la base.
// Syntaxe : //[ <Résultat> = ] ImporteXML (<sNomFichierXMLaImporter> est chaîne, // <sNomTableDestination> est chaîne) // // Paramètres : // sNomFichierXMLaImporter (chaîne ANSI) : Nom du fichier XML à importer // (un fichier du type des fichiers XML créez par la fonction HExporteXML) // sNomTableDestination (chaîne ANSI) : Nom du fichier destination // Valeur de retour : // booléen : Vrai si l'import c'est fait sans erreur // // Exemple : // ImporteXML("C:\Temp\FichieraImporter.xml","Commande") // PROCÉDURE ImporteXML(sNomFichierXMLaImporter est une chaîne,... sNomTableDestination est une chaîne) : booléen //Exemple de fichier XML traité : // <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> // <?xml-stylesheet href="FichierAImporter.xsl" type="text/xsl"?> // <HF_DOCUMENT> // <NomTable> // <NomRubrique>ValeurRubrique</NomRubrique> // ... // <NomRubriqueIndice> // <NomRubriqueIndice_1>ValeurRubriqueIndice</NomRubriqueIndice_1> // ... // </NomRubriqueIndice> // .... // </NomTable> // .... // </HF_DOCUMENT> // xmlEnregistrement est un xmlLecteur xmlRacineDoc est un xmlLecteur = XMLOuvreLecteur(sNomFichierXMLaImporter) SI ErreurDétectée ALORS // Erreur de déclaration du fichier, on affiche l'erreur Erreur("Echec de l'import",ErreurInfo()) RENVOYER Faux FIN ToastAffiche("Import en cours...") //Parcours du fichier sErreursImport est une chaîne sNomFichier est une chaîne sNomRubrique est une chaîne sValeurRubrique est une chaîne nIndice est un entier nNbImport est un entier sans signe sur 8 //parcours les éléments de premier niveau du XML POUR TOUT xmlRacineDoc // Jauge // JAUGE_Progression++ // C'est une balise de début de nom "HF_DOCUMENT" ? SI xmlRacineDoc.Type = XMLLecteurBaliseDébut _ET_ xmlRacineDoc.Nom = "HF_DOCUMENT" ALORS // Parcours de tous les sous-éléments (les enregistrements) POUR TOUT xmlEnregistrement DE xmlRacineDoc // Mmise à blanc des rubriques du fichier destination HRAZ(sNomTableDestination) // C'est un balise de début et pour le fichier voulu ? SI xmlEnregistrement.Type = XMLLecteurBaliseDébut _ET_ ... xmlEnregistrement.Nom ~= sNomTableDestination ALORS sNomFichier=xmlEnregistrement.Nom // Parcours des sous éléments (les rubriques) POUR TOUT xmlRubrique DE xmlEnregistrement SELON xmlRubrique.Type CAS XMLLecteurBaliseDébut sNomRubrique = xmlRubrique..Nom nIndice = 0 // Parcours des sous éléments (les valeurs rubriques) POUR TOUT xmlValeurRubrique DE xmlRubrique // C'est "à priori" pas une rubrique indicée SI nIndice=0 _ET_ ... xmlValeurRubrique.Type = XMLLecteurTexte ALORS // Récupération de la valeur sValeurRubrique = xmlValeurRubrique.Valeur SINON // C'est une balise de début ? SI xmlValeurRubrique.Type = XMLLecteurBaliseDébut ALORS // Donc c'est une rubrique indicée // Parcours des sous-éléments // (les valeurs rubriques indicées) POUR TOUT xmlValeurRubriqueIndicee DE xmlValeurRubrique // c'est bien SI xmlValeurRubriqueIndicee.Type = ... XMLLecteurTexte ALORS // Valeur de l'indice suivant nIndice++ sValeurRubrique = xmlValeurRubrique.Valeur // Affectation de la rubrique indicée QUAND EXCEPTION DANS {sNomTableDestination + "." + ... sNomRubrique, indRubrique}[nIndice]= ... sValeurRubrique FAIRE // rien : c'est pour éviter une erreur // si la rubrique n'existe pas // dans le fichier destination FIN FIN FIN FIN FIN FIN // c'était une rubrique indicée ? SI nIndice = 0 ALORS // non donc QUAND EXCEPTION DANS {sNomTableDestination+"."+ ... sNomRubrique,indRubrique}=sValeurRubrique FAIRE // rien : c'est pour éviter une erreur // si la rubrique n'existe pas dans le fichier destination FIN // SINON // Rubrique indicée, c'est déjà fait FIN AUTRE CAS // Rien FIN FIN // POUR TOUT xmlRubrique // Fin d'un enregistrement du fichier // Ajout dans le fichier destination SI PAS HAjoute(sNomTableDestination) ALORS sErreursImport += HErreurInfo() SINON nNbImport++ FIN FIN FIN // POUR TOUT xmlEnregistrement FIN FIN // Des erreurs durant l'import ? SI sErreursImport <> "" ALORS Erreur("Des erreurs se sont produites durant l'import : ", sErreursImport) RENVOYER Faux SINON ToastAffiche("Import de "+nNbImport + " enregistrements terminé avec succès sans erreur") RENVOYER Vrai FIN
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|