gpt4 book ai didi

c++ - QXmlStreamReader 只返回一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:05 26 4
gpt4 key购买 nike

这是 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Text>alpha beta</Text>
<Text>beta gamma</Text>
<Text>gamma delta</Text>
<Text>delta epsilon</Text>
<Text>epsilon golf</Text>

这是我的读者:

QXmlStreamReader inputStream(&dataFile);
while (!inputStream.atEnd() && !inputStream.hasError())
{
inputStream.readNext();
if (inputStream.isStartElement())
{
QString name = inputStream.name().toString();
if (name == "Text")
{
qDebug() << "text:" << inputStream.readElementText();
}
}
}

我的 qDebug 只打印:文本:“alpha beta”

为什么它只返回一个值,我该如何更正它?

BR

最佳答案

正如 Frank 在评论中正确指出的那样,一个有效的 XML 文档只能有一个根元素。一旦你修复了数据文件内容,它就会工作,但无论如何,我提供了我在我的机器上测试期间使用的所有内容。

测试.xml

<?xml version="1.0" encoding="UTF-8"?>
<TextList>
<Text>alpha beta</Text>
<Text>beta gamma</Text>
<Text>gamma delta</Text>
<Text>delta epsilon</Text>
<Text>epsilon golf</Text>
</TextList>

main.cpp

#include <QXmlStreamReader>
#include <QDebug>
#include <QString>
#include <QFile>

int main()
{
QFile file("test.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "File open error:" << file.errorString();
return 1;
}
QXmlStreamReader inputStream(&file);
while (!inputStream.atEnd() && !inputStream.hasError())
{
inputStream.readNext();
if (inputStream.isStartElement())
{
QString name = inputStream.name().toString();
if (name == "Text")
{
qDebug() << "text:" << inputStream.readElementText();
}
}
}
return 0;
}

主程序

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

构建并运行

qmake && make && ./main

输出

text: "alpha beta" 
text: "beta gamma"
text: "gamma delta"
text: "delta epsilon"
text: "epsilon golf"

关于c++ - QXmlStreamReader 只返回一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980434/

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