Any criticism would be appriciated. Does anyone have better methods at easy access to a parsed xml file?
Jeremy
Code: Select all
(define (my-xml-parse filename)
(xml-type-tags nil nil nil nil)
(rest (first (xml-parse (read-file filename) (+ 1 2 4 8 16)))))
(define (xml-get path data)
(let (p (parse path {/}))
(for (c 0 (- (length p) 1))
(let (loc (first (ref (sym (nth c p)) data)))
(set 'data (nth loc data)))))
(rest data))
(set 'config (my-xml-parse "config.xml"))
(println (xml-get (main-args 2) config))
(exit)
; config.xml:
; <config>
; <name><first>John</first><last>Doe</last></name>
; <age>20</age>
; <friends>
; <name>Jane</name>
; <name>Joe</name>
; <name>Frank</name>
; </friends>
; </config>
;
; $ newlisp config.lsp name/first
; ("John")
; $ newlisp config.lsp friends
; ((name "Jane") (name "Joe") (name "Frank"))