我用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>
只能这种标准格式
------解决方案--------------------