我需要读取a,b,c值(等于a,b,c是某些属性的名称)foreach节点并将它们列在表中,但我不知道如何读取节点值.你能给出一个示例代码吗?
提前致谢
我想读一个xml文件如下:
QFile myFile("xmlfile");
Run Code Online (Sandbox Code Playgroud)
然后继续从以下开始解析xml:
QXmlStreamReader xmlData(myFile);
Run Code Online (Sandbox Code Playgroud)
..我得到的错误是:
no matching function for call to 'QXmlStreamReader::QXmlStreamReader(QFile&)'
Run Code Online (Sandbox Code Playgroud)
那么问题是什么以及如何解决呢?
问题更新:根据下面选择的答案,代码现在正在运行,没有语法错误.
但是,我无法读取我的xml.在解析xml时,我使用以下内容来读取xml元素:
QXmlStreamReader::TokenType token = xmlElements.readNext();
Run Code Online (Sandbox Code Playgroud)
然后这段代码用于检查startElements:
while(!xmlElements.atEnd() && !xmlElements.hasError()){ // the breakpoint is here
do ...
}
Run Code Online (Sandbox Code Playgroud)
所以,在这个断点处,我在debuger中注意到令牌值是 QXmlStreamReader::Invalid(1)
所以,发生了什么..是我的QStreamReader不读取文件为xml,或者它读取它但xml本身有错误?
因此,我尝试通读一个中等大小的 XML 文档。它的结构如下:
<project identifier="project1">
<author>Joe Smith</author>
<author2>Rick Jones</author2>
<path>projects/internal/project2</path>
<version>1.51</version>
</project>
<project identifier="project2">
<author>Terry Chimes</author>
<author>Janie Jones</author>
<path>projects/external/project2</path>
<version>19.77</version>
</project>
Run Code Online (Sandbox Code Playgroud)
...等等,针对数百个项目。
我正在使用 Qt5.10 QXmlStreamReader,它可能是由虐待狂创建(或记录)的。
我可以project通过使用xmlReader.readNextStartElement- 或逐个阅读标签来找到每个标签,直到找到具有内部属性的标签(只有project标签在此文件中具有属性)。
但是,一旦我读到其中一个父元素,就会QXmlStreamReader吸收每个标签直到其结束</project>标签。问题是我需要获取其中一些数据,在本例中是标签内的内容<path></path>。
我可以使用 检索所有吞没的数据xmlReader.readElementText(QXmlStreamReader::IncludeChildElements,但这只是一个没有标签的大数据转储。
有谁知道我如何“倒回”并读取内部标签?或者阻止流读取器向前倾斜并吸收所有数据?