如何在QT中使用QDomDocument对象将字符串读取为XML
How to read string as XML with QDomDocument object in QT
我正在接收字符串作为具有以下功能的XML文档:
void HttpWindow::replyFinished(QNetworkReply *reply)
{
QString data = reply->readAll().trimmed();
bool value=document->setContent(&data);
}
这是我的插槽和信号:
connect(reply, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
当我放入上面的代码时,我得到了一个错误,即没有预定义的函数来接收我发送的一个字符串。。。有人能纠正这个问题吗?这样我就可以看到如何将这个Qstring值放入xml文档中。所以我可以阅读XML
谢谢
编辑:这些是我必须选择的功能,我已经尝试了所有功能,但似乎我没有发送正确的参数:
// 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:我不能编译它,我可以给你这个代码:
httpwindow.cpp: In member function 'void HttpWindow::replyFinished(QNetworkReply*)':
httpwindow.cpp:140: error: no matching function for call to 'QDomDocument::setContent(QString*)'
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:343: note: candidates are: bool QDomDocument::setContent(const QByteArray&, bool, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:344: note: bool QDomDocument::setContent(const QString&, bool, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:345: note: bool QDomDocument::setContent(QIODevice*, bool, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:346: note: bool QDomDocument::setContent(QXmlInputSource*, bool, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:347: note: bool QDomDocument::setContent(const QByteArray&, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:348: note: bool QDomDocument::setContent(const QString&, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:349: note: bool QDomDocument::setContent(QIODevice*, QString*, int*, int*)
........DesktopQt4.7.4mingwinclude/QtXml/qdom.h:350: note: bool QDomDocument::setContent(QXmlInputSource*, QXmlReader*, QString*, int*, int*)
或者告诉我如何获得Qdebug输出。你是说像Qdebug<<data
?
确实没有QDomDocument::setContent()的重载,它接受一个QString指针,通过值传递可以修复错误。
然而,您的代码中还有另一个严重的问题,即您正试图从QByteArray(readAll()的结果)转换为QString。这不仅是不必要的,而且是危险的,因为转换是在假设内容是ascii的情况下完成的。您可以直接调用document->setContent(回复)。
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何从字符串向量构造对象并避免复制?
- 在对象数组中搜索字符串并返回相应值的函数
- POCO C++对象到 JSON 字符串序列化
- 重载加法运算符(使用函数向对象添加字符串)
- 用字符串初始化我的类的对象
- C++ - 确定 const char* 是指向字符串文本对象还是动态对象
- 对象数组打印空白字符串
- 如何检索由带通配符的字符串索引的对象
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- 在C++中,我想通过使用来自变量(例如字符串)的typename信息,从模板中定义一个类对象
- 如何删除作为C++联合的成员变量的字符串对象
- 如何定义此"if block"中其他无效输入的值,以便在c ++中将字符串转换为对象?
- C++-将对象(如字符串)映射到表中成员函数的正确方法
- C++指向对象的指针堆数组中,如何将字符串传递给特定对象?有一些代码请看一下:
- 如何提取由特定模式分开的JSON对象字符串
- C++ 不接受对象字符串中的@符号吗?似乎是地址问题?