在Qt中处理XML文件和JSON字符串,你可以使用QDomDocument
和QJsonDocument
类。下面是如何在Qt中操作XML和JSON的详细示例。
操作XML文件
1. 读取XML文件
#include <QDomDocument>
#include <QFile>
#include <QDebug>
void readXml(const QString &filePath) {
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "Failed to open file:" << file.errorString();
return;
}
QDomDocument doc;
if (!doc.setContent(&file)) {
file.close();
qWarning() << "Failed to parse XML.";
return;
}
file.close();
QDomElement root = doc.documentElement();
qDebug() << "Root element:" << root.tagName();
QDomNodeList elements = root.elementsByTagName("Child");
for (int i = 0; i < elements.count(); ++i) {
QDomElement element = elements.at(i).toElement();
qDebug() << "Child element name:" << element.attribute("name");
qDebug() << "Child element text:" << element.text();
}
}
2. 写入XML文件
#include <QDomDocument>
#include <QFile>
#include <QTextStream>
void writeXml(const QString &filePath) {
QDomDocument doc;
QDomElement root = doc.createElement("Root");
doc.appendChild(root);
QDomElement child = doc.createElement("Child");
child.setAttribute("name", "example");
child.appendChild(doc.createTextNode("This is a child element."));
root.appendChild(child);
QFile file(filePath);
if (!file.open(QIODevice::WriteOnly)) {
qWarning() << "Failed to open file:" << file.errorString();
return;
}
QTextStream stream(&file);
doc.save(stream, 4); // Save with an indentation of 4 spaces
file.close();
}
操作JSON字符串
1. 解析JSON字符串
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QDebug>
void parseJson(const QString &jsonString) {
QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8());
if (doc.isNull() || !doc.isObject()) {
qWarning() << "Failed to parse JSON.";
return;
}
QJsonObject obj = doc.object();
qDebug() << "Object keys:" << obj.keys();
qDebug() << "Value of 'key1':" << obj["key1"].toString();
}
2. 生成JSON字符串
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QDebug>
void createJson() {
QJsonObject obj;
obj["key1"] = "value1";
obj["key2"] = 123;
obj["key3"] = true;
QJsonDocument doc(obj);
QString jsonString = doc.toJson(QJsonDocument::Indented);
qDebug() << "Generated JSON:" << jsonString;
}
总结
- XML:
- 使用
QDomDocument
来解析和创建XML文档。 - 读取XML时,可以获取元素和属性。
- 写入XML时,可以创建元素和设置属性,然后保存到文件。
- JSON:
- 使用
QJsonDocument
来解析和创建JSON文档。 - 解析JSON时,可以访问对象的键值。
- 生成JSON时,将对象转换为JSON字符串并打印或保存。
这些示例展示了如何在Qt中操作XML和JSON数据。根据你的需求,可以进一步定制这些操作。