当前位置: 代码迷 >> QT开发 >> QXmlStreamReader 读取xml有关问题
  详细解决方案

QXmlStreamReader 读取xml有关问题

热度:121   发布时间:2016-04-25 05:03:30.0
QXmlStreamReader 读取xml问题
我用QXmlStreamReader读取下面的xml时, GLOBAL这块老是读取不到,但是用tinyXml确是能够正常读取。

XML code
<?xml version="1.0" encoding="GBK"?><!-- TEST --><ToDo>    <!-- WELCOME --></ToDo><!-- 全局设置 --><GLOBAL>    <!-- UU -->        <item APP_CLIENT_IP="10.10.10.10" APP_SERVER_IP="10.10.10.11"/></GLOBAL>


请问下QXmlStreamReader是不支持两个并列的startElement么?

测试代码如下:
C/C++ code
    QString fileName("xml.xml");    QFile file(fileName);    if (!file.open(QFile::ReadOnly | QFile::Text))     {        QMessageBox::warning(this, tr("QXmlStream Bookmarks"),                              tr("Cannot open file %1:\n%2.")                              .arg(fileName)                              .arg(file.errorString()));         return;    }    QXmlStreamReader xml;    bool succ = false;    xml.setDevice(&file);    while (!xml.atEnd()) {        qDebug() << "name " << xml.name() << "text " << xml.readElementText() << "tokentype " << xml.tokenType();        if (xml.isCharacters()) {            //qDebug() << xml.text();        }        xml.readNext();        qDebug() << "2 name " << xml.name() << "text " << xml.readElementText() << "tokentype " << xml.tokenType();        qDebug() << xml.errorString();    }


测试打印输出为:

name "" text "" tokentype 0 
2 name "" text "" tokentype 2 
"" 
name "" text "" tokentype 2 
2 name "" text "" tokentype 7 
"" 
name "" text "" tokentype 7 
2 name "ToDo" text "
   
" tokentype 4 
"" 
name "ToDo" text "" tokentype 5 
2 name "" text "" tokentype 7 
"" 
name "" text "" tokentype 7 
2 name "GLOBAL" text "" tokentype 1 
"Extra content at end of document."



------解决方案--------------------
你用dom模式试试

------解决方案--------------------
读不到就对了,一个XML文件只允许有一个根元素。你的文件里存在两个!
------解决方案--------------------
C/C++ code
  if(isEndElement())      {         if(name() == "item")          {                 qDebug()<<"......";        }    }
------解决方案--------------------
读不到就证明:

<DATA>
 ...
</DATA>
只能这种标准格式
------解决方案--------------------
探讨

引用:
读不到就对了,一个XML文件只允许有一个根元素。你的文件里存在两个!


XML标准么? 主要我用 tinyxml这个库读起来很正常的。。

http://sourceforge.net/projects/tinyxml/?source=directory