Stopper parseur SAX

Signaler
Messages postés
17
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
23 février 2010
-
Messages postés
17
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
23 février 2010
-
Bonjour à toutes et tous,

Voila mon pb.

Je développe en vb6 une petite appli qui doit récupérer quelques fichiers xml parmi d'autres (selon le contenu du xml).
Pour arriver à mes fins, je parse un par un les xml (une form et un module de classe pour le ContentHandler).
Je sais dès la 3ème balise si le fichier doit être retenu ou pas.
S'il ne doit pas être retenu, je voudrais stopper le parseur SAX pour passer au xml suivant.
Mais je ne trouve pas l'instruction pour mettre fin au parseur.
Avez-vous le bout de code qui me manque !

Merci d'avance.

ZZEBULON

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
et ton code (celui que l'on ne voit pas) tu ne crois pas qu'il serait indispensable pour savoir quand et à quelles conditions abandonner ?
Moi, je crois bien que oui !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Car, par exemple, on ne quitte pas une boucle For comme un quitte une boucle loop (entre autres...)
Question subsidiaire : es-tu vraiment certain de développer sous VB6 (le présent thème) ? je n'en suis pas vraiment certain ...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
17
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
23 février 2010

On dispose d'un fichier D:\test\test.xml qui contient une et une seule balise REF avec un attribut ANNEE. Si ANNEE antérieure à 2008, une variable publique bolTEST devra avoir la valeur True dans le prog.
Le code simplifié est le suivant:

Dans un module:

Public bolTEST As Boolean

Public Sub TESTExml()
Dim reader As New SAXXMLReader60
Dim contentHandler As New ContentHandlerImpl

Set reader.contentHandler = contentHandler

bolTEST = False
reader.parseURL "D:test\test.xml"

End Sub

Dans un module de classe nommé ContentHandlerImpl:

Implements IVBSAXContentHandler

Private Sub IVBSAXContentHandler_startElement(strNamespaceURI As _
String, strLocalName As String, strQName As _
String, ByVal oAttributes As MSXML2.IVBSAXAttributes)

If strLocalName = "REF" Then
'ici on teste si l'attribut de l'élément REF est antérieur à 2008
If oAttributes.getValueFromName("ANNEE") < 2008 Then
bolTEST = True 'ANNEE antérieure à 2008, mise à jour de la variable publique
'Et arrêt du parseur mais comment arrêter le parseur ?
End If
End If


End Sub




Private Sub IVBSAXContentHandler_characters(strChars As String)

End Sub

Private Property Set IVBSAXContentHandler_documentLocator(ByVal RHS _
As MSXML2.IVBSAXLocator)

End Property


Je crois que je vais générer une erreur pour stopper le parseur. Ce n'est pas glorieux comme procédé mais ça devrait marcher.
ZZEBULON