Lightweight XMPP library.
- RFC-6120 - Core
- XEP-0004 - Data Forms
- XEP-0012 - Last Activity
- XEP-0030 - Service Discovery
- XEP-0045 - Multi User Chat
- XEP-0047 - In-Band Bytestreams
- XEP-0085 - Chat States Notifications
- XEP-0092 - Software Version
- XEP-0172 - User Nickname
- XEP-0199 - Ping
- XEP-0202 - Entity Time
- XEP-0203 - Delayed Delivery
The XmppElementFactory class registers and maintains the mapping of all XML elements to their respective classes. Each element is qualified by a name (Tag name) and its namespace URI, when registered the parser will obtain this information and construct the class corresponding to the XML element. If the mapping does not exist, it will use a fallback by constructing an instance of XmppSharp.Dom.XmppElement.
Consider the example table below demonstrating how this mapping works:
| Qualified Tag Name | Namespace(s) | Mapped Class |
|---|---|---|
| stream:stream | http://etherx.jabber.org/streams | XmppSharp.Protocol.Base.StreamStream |
| starttls | urn:ietf:params:xml:ns:xmpp-tls | XmppSharp.Protocol.Tls.StartTls |
| auth | urn:ietf:params:xml:ns:xmpp-sasl | XmppSharp.Protocol.Sasl.Auth |
Note
Some cases (like iq, message, presence) have more than one namespace defined (because it depends on each specific side of connection), but they are declared in the same way. The difference is that more than one namespace is assigned to this element, so the XmppElementFactory can correctly map which one it will instantiate.