I am running into an issue in which any time cxml encounters an escaped character such as ", &, etc. while parsing a socket stream, it throws an error (pasted below). I have tried parsing xml with such characters using cxml:parse-file and have not encountered any issues. I've taken a look at the data going across the socket using tcpdump and it appears to be transmitted correctly.
Here is an example of the type of element that causes the problem:
<message type="groupchat" id="ac0ca" to="20@conference.shiva.guruza.com" > <body>Hello"</body> </message>
I'm using the cxml distributed in the cxml-2006-01-05 tar file with sbcl 0.9.8 with unicode support.
The value NIL is not of type CXML::STREAM-NAME. [Condition of type TYPE-ERROR]
Restarts: 0: [ABORT] Abort handling SLIME request. 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {A197959}>)
Backtrace: 0: ((LAMBDA (CXML::X)) #<RUNES:XSTREAM NIL>) 1: (SB-KERNEL:%FIND-POSITION-IF #<CLOSURE (LAMBDA (CXML::X)) {950CD3D}> (:STOP #<RUNES:XSTREAM NIL>) NIL 0 NIL #<FUNCTION IDENTITY>) 2: (CXML::ZSTREAM-PUSH #<RUNES:XSTREAM [apos :GENERAL NIL]> #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>))) 3: ((LAMBDA (CXML::NEW-XSTREAM)) #<RUNES:XSTREAM [apos :GENERAL NIL]>) 4: (CXML::CALL-WITH-ENTITY-EXPANSION-AS-STREAM #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>)) #<CLOSURE (LAMBDA (CXML::NEW-XSTREAM)) {950CCB5}> "apos" :GENERAL NIL) 5: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>))) 6: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>))) 7: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>))) 8: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>))) 9: (CXML::P/DOCUMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (:STOP #<RUNES:XSTREAM NIL>)) #<CL-XMPP::STANZA-HANDLER {94D3E51}> :VALIDATE NIL :DTD NIL :ROOT NIL :ENTITY-RESOLVER NIL :DISALLOW-INTERNAL-SUBSET NIL :RECODE T) 10: (CXML::PARSE-XSTREAM #<RUNES:XSTREAM NIL> #<CL-XMPP::STANZA-HANDLER {94D3E51}>) 11: (CL-XMPP::READ-STANZA #<CL-XMPP:CONNECTION to shiva.guruza.com:5222 (open) {A9AE611}>) 12: ((SB-PCL::FAST-METHOD CL-XMPP:RECEIVE-STANZA (CL-XMPP:CONNECTION)) #<unavailable argument> #<unavailable argument> #<CL-XMPP:CONNECTION to shiva.guruza.com:5222 (open) {A9AE611}> NIL) 13: (SB-INT:EVAL-IN-LEXENV (CL-XMPP:RECEIVE-STANZA (GET-CONNECTION 20)) #<NULL-LEXENV>)