我现在正在使用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?
提前感谢您的帮助!
答案 0 :(得分: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);
}