Here is the login procedure:
* Send out some xml spam to "create a stream"
* Receive a stream reply, with feature sets.
* Send out starttls
* Get a reply back
* Switch to secure mode
* Send out some xml spam to "create a stream" inside the first stream
* Receive reply back, check supported auth modes
* Send out auth
* Receive reply back
* Send out some *MORE* xml spam to "create a stream" inside the first 2
* Receive reply back, with features
* Bind
* Create session
THEN you can do something useful. Most of the verboseness is idiotic XML:eg <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
Those xmlns's are everywhere, and are stupidly verbose.
You can write IRC commands by hand into telnet. But typing in xml is just not feasable since it's so stupidly verbose.