4

目前我正在 Debian 7 下使用 Qt4.8.6 迈出第一步,我真的很喜欢它!但现在我需要一些帮助来解决这个问题:

我的应用程序连接到服务器并触发数据请求。然后,XML 数据以一个或多个 TCP 数据包的形式发送回我的应用程序,在那里它被组合成一个完整的“消息”,即包含所请求数据的格式良好的 XML 文档。

接收数据完美无缺,但现在我想以一种格式良好的方式显示接收到的 XML 数据以进行调试等。问题:我确实在一个简单的 QString 中有 XML 数据,我不想开始美化它与我自己的例程手。我已经看到有一个提供自动格式化的 XmlStreamWriter。听起来不错!但是我怎样才能用我的 XML 数据“馈送”它并让它将格式化的数据输出到另一个 QString 中呢?

void MainWindow::displayMessage(QString message)
{
    QString formattedOutput;

    QXmlStreamReader xmlreader(message);

    QXmlStreamWriter xmlwriter(&formattedOutput);
    xmlwriter.setAutoFormatting(true);

    ResponseTextEdit->append(formattedOutput);
}

我不知何故错过了链接:XML 数据已经存在,它也可以由xmlreader读取。xmlwriter被配置为写入 QString formattedOutput并且还被设置为自动格式化输出。但是我怎样才能将我的 XML 数据放入 xmlwriter 中!?或者这是一种完全错误的方法,并且有一种更简单的方法可以从一个整齐的字符串中输出 XML?

在此先感谢您的帮助!

4

1 回答 1

3

XML 流读取器和写入器对于您的目的来说有点太低级了;您必须手动从阅读器复制到作者。

你最好从你的字符串构造一个 DOM 文档并保存它。像这样的东西:

void MainWindow::displayMessage(QString message)
{
    QString formattedOutput;

    QDomDocument doc;
    doc.setContent(message, false);

    QTextStream writer(&formattedOutput);
    doc.save(writer, 4);  //or whatever indentation you want

    ResponseTextEdit->append(formattedOutput);
}
于 2013-10-02T13:03:07.620 回答