首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QT中用QDomDocument对象读取字符串

如何在QT中用QDomDocument对象读取字符串
EN

Stack Overflow用户
提问于 2012-01-25 04:06:56
回答 1查看 4.8K关注 0票数 1

我使用以下函数接收XML文档形式的字符串:

代码语言:javascript
复制
void HttpWindow::replyFinished(QNetworkReply *reply)
{
     QString data = reply->readAll().trimmed();
     bool value=document->setContent(&data);
}

这是我的位置和信号:

代码语言:javascript
复制
connect(reply, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

当我把上面的代码放在上面的时候,我得到了错误,没有预定义的函数接收一个字符串,因为我让sended...Can有人尝试纠正这个错误,这样我就可以看到如何将这个Qstring值放入xml文档中。这样我就可以阅读XML了

谢谢

编辑:这些是我必须选择的功能,我已经尝试了所有的功能,但似乎我没有发送正确的参数:

代码语言:javascript
复制
 // Qt extensions
    bool setContent(const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
    bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );

编辑2:我不能编译它,我可以给你这段代码:

代码语言:javascript
复制
httpwindow.cpp: In member function 'void HttpWindow::replyFinished(QNetworkReply*)':
httpwindow.cpp:140: error: no matching function for call to 'QDomDocument::setContent(QString*)'
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:343: note: candidates are: bool QDomDocument::setContent(const QByteArray&, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:344: note:                 bool QDomDocument::setContent(const QString&, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:345: note:                 bool QDomDocument::setContent(QIODevice*, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:346: note:                 bool QDomDocument::setContent(QXmlInputSource*, bool, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:347: note:                 bool QDomDocument::setContent(const QByteArray&, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:348: note:                 bool QDomDocument::setContent(const QString&, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:349: note:                 bool QDomDocument::setContent(QIODevice*, QString*, int*, int*)
..\..\..\..\Desktop\Qt\4.7.4\mingw\include/QtXml/qdom.h:350: note:                 bool QDomDocument::setContent(QXmlInputSource*, QXmlReader*, QString*, int*, int*)

或者告诉我如何获得Qdebug输出。你是说像Qdebug<<data那样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-26 01:24:13

确实没有使用QString指针的QDomDocument::setContent()重载,通过值传递可以修复错误。

然而,在您的代码中还有另一个严重的问题,那就是您正在尝试从QByteArray (readAll()的结果)转换为QString。这不仅是不必要的,而且是危险的,因为转换是在假设内容是ascii的情况下完成的。您可以只调用document->setContent(reply)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8993345

复制
相关文章

相似问题

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