gpt4 book ai didi

c++ - QXmlStreamReader (Qt5) : get all sub-elements inside a tag

转载 作者:行者123 更新时间:2023-11-28 02:21:36 34 4
gpt4 key购买 nike

我要解析的 XML 是这样的:

 <posts>
<post>
<id>1234</id>
<file_url>/foo/bar</file_url>
</post>
</posts>

现在,我需要为 post 的每个 child 插入,它的标签名称和内容在一个 QVariantMap 中,其中键是标签,内容(文本)是值。

此外,这是 Web API 返回的内容,因此我不能对标签名称进行硬编码(“post”除外),因为结果可能会因调用的不同而有所不同。

我的代码:

QXmlStreamReader reader;
reader.addData(data); // data is a QByteArray obtained from the API call
while(reader.readNextStartElement()) {
qDebug() << reader.name();
if (reader.name() == "post") {
while(reader.readNextStartElement()) {
qDebug() << reader.name() << reader.text();
}
}
}

然而发生的是我只得到“id”而没有别的。据我从文档中了解到,这是预期的行为,但这不是我需要的。

如何只获取<post>之间的标签?和 </post>

最佳答案

您需要使用 reader.readElementText() 或使用 reader.skipCurrentElement() 来告诉 XML 阅读器移动到下一个元素,而不是使用 reader.text()(如果该元素不是您要查找的元素)为。

QXmlStreamReader reader;
reader.addData(data); // data is a QByteArray obtained from the API call
while(reader.readNextStartElement()) {
qDebug() << reader.name();
if (reader.name() == "post") {
while(reader.readNextStartElement()) {
qDebug() << reader.name() << reader.readElementText();
}
}
}

关于c++ - QXmlStreamReader (Qt5) : get all sub-elements inside a tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254213/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com