From: Kab
Subject: s-exp to xml?!?
Date: Thu, 16 Dec 2004 10:19:44 +0000
Message-ID: <2004121610194412879@mynewsgate.net> Hi everyone,
someone know if exists any function that translates a Lisp list in a XML
document? I find only the inverse function (xml-to-sexp).
Thank you,
Andrea
Inviato da www.mynewsgate.net From: ·········@gmail.com
Subject: Re: s-exp to xml?!?
Date: Thu, 16 Dec 2004 18:05:15 +0000
Message-ID: <1103220315.199450.200990@c13g2000cwb.googlegroups.com> xmls <http://common-lisp.net/project/xmls/> can go both ways. Its PARSE
and WRITE-XML functions are the ones you're talking about.
That said, though, I do have some reservations about xmls. Its error
handling leaves something to be desired IIRC, and its sexp syntax
should be changed. There are probably similar things in other XML
parsers, but I haven't looked carefully enough.
-Peter Scott From: Pascal Bourguignon
Subject: Re: s-exp to xml?!?
Date: Thu, 16 Dec 2004 10:49:19 +0000
Message-ID: <87llby4ixc.fsf@thalassa.informatimago.com> "Kab" <············@mynewsgate.net> writes:
> Hi everyone,
> someone know if exists any function that translates a Lisp list in a XML
> document? I find only the inverse function (xml-to-sexp).
> Thank you,
> Andrea
Well, it's so easy to write:
(defun sexp-to-xml (sexp)
(cond
((null sexp) "")
((symbolp sexp) (format nil "<symbol>~S</symbol>" sexp))
((stringp sexp) (format nil "<string>~S</string>" sexp))
((numberp sexp) (format nil "<number>~S</number>" sexp))
((atom sexp) (format nil "<atom>~S</atom>" sexp))
(t (format nil "<list>~%~{<item>~A</item>~%~}</list>~%"
(mapcar (function sexp-to-xml) sexp)))))
(princ (sexp-to-xml '(defun sexp-to-xml (sexp)
(cond
((null sexp) "")
((atom sexp) (format nil "~A" sexp))
(t (format t "<~A>~A</~A>"
(car sexp) (sexp-to-xml (cdr sexp)) (car sexp)))))))
<list>
<item><symbol>DEFUN</symbol></item>
<item><symbol>SEXP-TO-XML</symbol></item>
<item>
<list>
<item><symbol>SEXP</symbol></item>
</list>
</item>
<item>
<list>
<item><symbol>COND</symbol></item>
<item>
<list>
<item>
<list>
<item><symbol>NULL</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
<item><string>""</string></item>
</list>
</item>
<item>
<list>
<item>
<list>
<item><symbol>ATOM</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
<item>
<list>
<item><symbol>FORMAT</symbol></item>
<item></item>
<item><string>"~A"</string></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
</list>
</item>
<item>
<list>
<item><symbol>T</symbol></item>
<item>
<list>
<item><symbol>FORMAT</symbol></item>
<item><symbol>T</symbol></item>
<item><string>"<~A>~A</~A>"</string></item>
<item>
<list>
<item><symbol>CAR</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
<item>
<list>
<item><symbol>SEXP-TO-XML</symbol></item>
<item>
<list>
<item><symbol>CDR</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
</list>
</item>
<item>
<list>
<item><symbol>CAR</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
</list>
</item>
</list>
</item>
</list>
</item>
</list>
--
__Pascal Bourguignon__ http://www.informatimago.com/
Cats meow out of angst
"Thumbs! If only we had thumbs!
We could break so much!" From: Jim Newton
Subject: Re: s-exp to xml?!?
Date: Fri, 17 Dec 2004 08:41:06 +0000
Message-ID: <32fkeiF3l9cmrU1@individual.net> hi Pascal, what advantage do you have in including
all the <item></item> tags in the output?
why not simply omit them?
<symbol>COND</symbol>
<list>
<list>
<symbol>NULL</symbol>
<symbol>SEXP</symbol>
</list>
...
instead of this?
<item><symbol>COND</symbol></item>
<item>
<list>
<item>
<list>
<item><symbol>NULL</symbol></item>
<item><symbol>SEXP</symbol></item>
</list>
</item>
Pascal Bourguignon wrote:
> "Kab" <············@mynewsgate.net> writes:
>
>
>>Hi everyone,
>>someone know if exists any function that translates a Lisp list in a XML
>>document? I find only the inverse function (xml-to-sexp).
>>Thank you,
>>Andrea
>
>
> Well, it's so easy to write:
>
> (defun sexp-to-xml (sexp)
> (cond
> ((null sexp) "")
> ((symbolp sexp) (format nil "<symbol>~S</symbol>" sexp))
> ((stringp sexp) (format nil "<string>~S</string>" sexp))
> ((numberp sexp) (format nil "<number>~S</number>" sexp))
> ((atom sexp) (format nil "<atom>~S</atom>" sexp))
> (t (format nil "<list>~%~{<item>~A</item>~%~}</list>~%"
> (mapcar (function sexp-to-xml) sexp)))))
>
>
> (princ (sexp-to-xml '(defun sexp-to-xml (sexp)
> (cond
> ((null sexp) "")
> ((atom sexp) (format nil "~A" sexp))
> (t (format t "<~A>~A</~A>"
> (car sexp) (sexp-to-xml (cdr sexp)) (car sexp)))))))
>
> <list>
> <item><symbol>DEFUN</symbol></item>
> <item><symbol>SEXP-TO-XML</symbol></item>
> <item>
> <list>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> <item>
> <list>
> <item><symbol>COND</symbol></item>
> <item>
> <list>
> <item>
> <list>
> <item><symbol>NULL</symbol></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> <item><string>""</string></item>
> </list>
> </item>
> <item>
> <list>
> <item>
> <list>
> <item><symbol>ATOM</symbol></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> <item>
> <list>
> <item><symbol>FORMAT</symbol></item>
> <item></item>
> <item><string>"~A"</string></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> </list>
> </item>
> <item>
> <list>
> <item><symbol>T</symbol></item>
> <item>
> <list>
> <item><symbol>FORMAT</symbol></item>
> <item><symbol>T</symbol></item>
> <item><string>"<~A>~A</~A>"</string></item>
> <item>
> <list>
> <item><symbol>CAR</symbol></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> <item>
> <list>
> <item><symbol>SEXP-TO-XML</symbol></item>
> <item>
> <list>
> <item><symbol>CDR</symbol></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> </list>
> </item>
> <item>
> <list>
> <item><symbol>CAR</symbol></item>
> <item><symbol>SEXP</symbol></item>
> </list>
> </item>
> </list>
> </item>
> </list>
> </item>
> </list>
> </item>
> </list>
>
>