首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能从QDomElement那里得到QXmlStreamWriter吗?

能从QDomElement那里得到QXmlStreamWriter吗?
EN

Stack Overflow用户
提问于 2014-06-23 09:47:13
回答 2查看 465关注 0票数 1

我正在使用qxmpp编写一个小型XMPP服务器。现在,我想创建一个QXmppStanza,并将它呈现给服务器和我的插件

代码语言:javascript
复制
void QXmppServer::handleElement(const QDomElement &element)

这个函数需要一个QDomElement而不是QXmppStanza。我在QXmppStanza及其派生类(除了解析(.))中找到的唯一的XML可实现函数是函数

代码语言:javascript
复制
void toXml(QXmlStreamWriter *writer)

我还没有在qt中处理XML的经验,那么是否有一种比将XML写入字符串/ByteArray、使用它作为输入来创建新的QDomElement并返回它的documentElement更高效的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-02 12:06:12

经过进一步的研究,我不得不承认这是不可能的。

正如QDomDocument的文档中所述,为了处理一个QDomDocument(和其他节点),我总是需要一个QDomElement:

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

QXmlStreamWriter没有QDomDocument,所以我必须创建一个QDomDocument (当然,它必须使用元素的时间长短),然后解析文本(QDomDocument::setContent)。

票数 0
EN

Stack Overflow用户

发布于 2017-03-28 18:57:16

我遇到了类似的问题,通过执行类似于下面所示的操作,我能够将流转换为DOM元素。

第一步是流到字节数组。

代码语言:javascript
复制
QByteArray data;
QXmlStreamWriter writer(&data);
object->toXml(&writer);

第二步是设置DOM文档的内容。文档的文档元素应该是您需要的DOM元素。

代码语言:javascript
复制
QDomDocument temp;
if(temp.setContent(data))
    QDomElement element = temp.documentElement(); // do whatever you want with this element
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24362884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档