QXmlStreamReader 循环判断的问题

BillLeecn 2010-08-18 09:36:50
XML 文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE MyData><MyData version="0.1"/><item topic="1" date="周三 8月 18 2010" lastReview="周五 1月 1 2010"/>

代码:
		QXmlStreamReader xml(&file);
if( xml.readNextStartElement() ){
if( xml.name() == "MyData" && xml.attributes().value("version") == "0.1"){
while(xml.readNextStartElement()){ //在这里不进入循环
if(xml.name() == "item"){
QString topic(xml.attributes().value("topic").toString());
QDate date = QDate::fromString(xml.attributes().value("date").toString());
QDate lastRecite = QDate::fromString(xml.attributes().value("lastReview").toString());

问题是这个 StartElement 是什么东西来的?我 Google 了也没看到 XML 规范中有叫做 StartElement 的东西。
要怎么改代码才能搞定?
...全文
179 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tbolr 2010-08-27
  • 打赏
  • 举报
回复
没什么好说的, readStartElement 就是在读完一个元素后会返回一个 false, 不过继续读就能读到下一个元素。
代码是两重循环。大概就是
while(xml.readStartElement()){
while(xml.readStartElement(){

看看 QXmlStream Bookmarks Example 吧。
lefttime 2010-08-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 billleecn 的回复:]
XML 文件
XML code
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE MyData><MyData version="0.1"/><item topic="1" date="周三 8月 18 2010" lastReview="周五 1月 1 2010"/>

代码:
C/C++ code
QXmlStreamRe……
[/Quote]
StartElement和EndElement是一对的~`` 在存取XML时,都会有个标记例如:
<title>XXXXX</title> 这里的<title>就是作为StartElement, 而相对应的</title>就是EndElement~``
如果是<title XXXX />那是将StartElement和EndElement放在了一块~``

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧