Bonjour

Je fais une un scan d'un très gros fichier XML avec la proc suivante (ce qui m'a va bien)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
sFichier est une chaîne
sChemin est une chaîne
nbritem est un entier
// Ouvre le sélecteur de fichiers
sChemin = fSélecteur("", "", "Sélectionnez un fichier.....", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*")
dAtemodification est une Date = fDate(sChemin)
sFichier = ExtraitChaîne(sChemin,rangDernier,"\",DepuisDébut)
 
XMLTermine("Exemple")
 
 
SI HLitRecherche(fichier,nom,sFichier,hIdentique) = Vrai ALORS
 
	SI dAtemodification = fichier.datedemodifcation ALORS
 
		MonDoc = fChargeTexte(sChemin)
		// Création du document
		XMLDocument("Exemple", MonDoc)
 
		REQ_select_file.IDfichier = fichier.IDfichier
		TableAffiche(FEN_main.TABLEH_chargement,taRéExecuteRequete)
		FEN_main.JAUGE_SansNom1 = FEN_main.JAUGE_SansNom1..BorneMax
		RETOUR
 
	FIN
 
SINON
 
	MonDoc = fChargeTexte(sChemin)
	// Création du document
	XMLDocument("Exemple", MonDoc)
 
	GOTO chargement
 
FIN
 
chargement:
 
//ajout fichier
fichier.chemin = sChemin
fichier.datedemodifcation  = dAtemodification
fichier.nom = sFichier
HAjoute (fichier)
 
 
 
// Texte de la requête : Recherche de la balise Index
RequêteXPATH est une chaîne = "count(/CCDoc/Geometries/Geometry/Datas/Insert)"
 
SI ErreurDétectée = Vrai ALORS
	Erreur("Le fichier n'est pas au format XML.")
	RETOUR
FIN
b est un booléen
b = XMLExécuteXPath("Exemple", RequêteXPATH)
nbritem =  XMLRésultat("Exemple")
// Est-ce une requête de calcul ?
SI b = Vrai ET XMLEnDehors("Exemple") = Vrai ALORS
	// Voilà le résultat du calcul
	Trace("XMLRésultat=" + XMLRésultat("Exemple"))
FIN
i est un entier = 1
 
REQ_select_file.ParamID = 0
TableAffiche(FEN_main.TABLEH_chargement,taRéExecuteRequete)
MultitâcheRepeint(FEN_main)
 
FEN_main.JAUGE_SansNom1..BorneMax = nbritem		
		ChronoDébut(1)
		POUR i = 1 _A_ nbritem
		soit t = TâcheParallèleExécute(ajoute_data,(i,fichier.IDfichier),tpoCopieComplèteContexteHFSQL)
		FEN_main.JAUGE_SansNom1 = i
		MultitâcheRepeint(FEN_main)
		FIN
		ChronoFin(1)
 
		HExécuteRequête(REQ_delete_NRD,hRequêteDéfaut)
 
//		trace ("temps : " + ChronoValeur(1)/1000)
		ToastAffiche("traitement terminé",toastLong,cvMilieu,chCentre,BleuPastel)
		REQ_select_file.ParamID = fichier.IDfichier
		TableAffiche(FEN_main.TABLEH_chargement,taRéExecuteRequete)
J'utilise aussi ce code pour lire une valeur précise (grace a l'indice récupé précedement)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
XMLLit("Exemple","/CCDoc/Geometries/Geometry/Datas/Insert["+ nIndice + "]/@entityNum")

je voudrais supprimer la balise XML ==> normalement avec la commande XMLSUPPRIME

mais la je n'arrive pas a utiliser le "chemin"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CCDoc/Geometries/Geometry/Datas/Insert["+ nIndice + "]/@entityNum"
Je suis obligé de scanner tout les balises CCDoc/Geometries/Geometry/Datas/Insert ==> ju'squ'a trouvé la bonne valeur de l'attribut entityNum
ce qui est très très long vu les qque millier de balise CCDoc/Geometries/Geometry/Datas/Insert

y t il un moyen de faire plus rapide

Merci de votre aide