2010-10-27 3 views
-1

im essayant de charger un fichier sxml ... je parviens à le faire dans le schéma. Maintenant, je veux passer à travers en utilisant la récursivité et les éléments situés que je veux. mon code est comme ceci,passer par un fichier sxml dans le schéma

(define file (read(open-input-file "test1.sxml"))) 

(define myfunc 
    (lambda (S) 
    (if (eq? "foo" (car S)) 
     (display "found\n") 
     (display "not found\n") 
    ) 
    (if (null? (cdr S)) 
     (display "\n") 
     (myfunc(cdr S))))) 

mais il semble qu'il ne traverse que la première ligne du fichier sxml. comment puis-je faire passer à travers tout le fichier jusqu'à la fin?

Répondre

0

1) Vous devez rechercher dans toutes les sous-listes de la structure. Votre code ne regarde actuellement que les éléments les plus importants. 2) Vous ne voulez généralement pas avoir plusieurs instructions à la suite (comme vos deux instructions if) 3) Vous voulez probablement rechercher des symboles, pas des chaînes, dans votre fichier SXML. Peu importe, vous devez utiliser equal? pour comparer les chaînes.

Ainsi, votre fonction devient

(define myfunc 
    (lambda (S) 
    (cond 
     ((null? S) #f) 
     ((pair? (car S)) (or (myfunc (car S)) (myfunc (cdr S)))) ; search on sublists 
     ((equal? "foo" (car S)) #t) ; if found, return true 
     (else (myfunc (cdr S)))))) 
+0

j'ai essayé votre code sur mon fichier sXML mais il me renvoie une valeur fausse – pantelis

Questions connexes