在scheme中查看xml文件

时间:2010-10-27 02:31:21

标签: scheme

即时尝试加载sxml文件...我设法在方案中执行此操作。现在我想通过使用递归和找到我想要的项目来完成它。我的代码是这样的,

(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)))))

但它似乎只通过sxml文件的第一行。我怎么能让它通过所有文件直到结束?

1 个答案:

答案 0 :(得分:0)

1)您需要搜索结构的所有子列表。您的代码现在只查看最顶层的元素。 2)您通常不希望连续多个语句(如两个if语句) 3)您可能希望在SXML文件中查找符号而不是字符串。无论如何,您必须使用equal?来比较字符串。

因此,您的功能变为

(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))))))