c++qtdomqxmpp

Possible to get QDomElement from QXmlStreamWriter?


I'm writing a small XMPP server using qxmpp. Now I want to create a QXmppStanza and present it (as if a client had sent it) to the server and my plugins using

void QXmppServer::handleElement(const QDomElement &element)

This function requires a QDomElement and not a QXmppStanza. The only XML realted function I found in QXmppStanza and its derived classes (besides parse(...) ) is the function

void toXml(QXmlStreamWriter *writer)

I don't have experience with XML handling in qt yet, so is there a more performant way than writing the XML to a string/ByteArray, use it as input to create a new QDomElement and return its documentElement?


Solution

  • After doing some further research I have to accept it is not possible.

    As stated in QDomDocument's documentation I always require a QDomDocument in order to work with a QDomElement (and other nodes):

    Since elements, text nodes, comments, processing instructions, etc., cannot exist outside the context of a document (...)

    The QXmlStreamWriter doesn't have a QDomDocument, so I really have to create a QDomDocument (which of course must live as long I want to work with the element) and then parse the text (QDomDocument::setContent).