我正在使用qxmpp编写小型XMPP服务器。现在,我想创建一个QXmppStanza并将其(好像客户端已经发送了)呈现给服务器和我的插件,使用

void QXmppServer::handleElement(const QDomElement &element)


此函数需要一个QDomElement而不是一个QXmppStanza。我在QXmppStanza及其派生类(除了parse(...)之外)中找到的唯一XML实函数是该函数

void toXml(QXmlStreamWriter *writer)


我还没有在qt中处理XML的经验,所以有没有比将XML写入字符串/ ByteArray,将其用作输入来创建新的QDomElement并返回其documentElement更好的方式了?

最佳答案

经过进一步研究后,我不得不接受这是不可能的。

如QDomDocument的文档所述,我始终需要QDomDocument才能与QDomElement(和其他节点)一起使用:


  由于元素,文本节点,注释,处理指令等不能存在于文档的上下文之外(...)


QXmlStreamWriter没有QDomDocument,所以我真的必须创建一个QDomDocument(当然,只要我想使用该元素,它必须存在),然后解析文本(QDomDocument :: setContent)。

10-08 08:54