2016-01-18 7 views
0

У меня есть функция-член для синтаксического анализа XML, как это:Синтаксический XML в Qt

void xmlparser::parsingFunction() 
{ 
    while(1) 
    { 
     QFile file("info.xml"); 
     if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
     { 
      qDebug("Failed to open file for reading"); 
     } 

     QDomDocument document; 

     if(!document.setContent(&file)) 
     { 
      qDebug("Failed to parse the file into a Dom tree"); 
      file.close(); 
     } 
     file.close(); 

     QDomElement documentElement = document.documentElement(); 

     QDomNode node = documentElement.firstChildElement(); 

     while(!node.isNull()) 
     { 
      if(node.isElement()) 
      { 
       QDomElement first = node.toElement(); 
       emit xmlParsed(first.tagName()); 
       sleep(5); 
      } 
      node.nextSibling(); 
     } 
    } 
} 

Мой XML-дерево выглядит так http://pastebin.com/nFMJKcmU

Я не знаю, почему он не показывает все доступные теги информация о корневом элементе

ответ

1

Вы сделали некоторые ошибки при повторной печати из официального примера документации. Пожалуйста, взгляните на его типичное использование, описанное в QDomDocument Class documentation. Поэтому ваш код должен выглядеть так:

QDomElement docElem = document.documentElement(); 
QDomNode n = docElem.firstChild(); 
while (!n.isNull()) { 
    // Try to convert the node to an element. 
    QDomElement e = n.toElement(); 
    if (!e.isNull()) { 
     // The node really is an element. 
     qDebug() << qPrintable(e.tagName()) << endl; 
    } 
    n = n.nextSibling(); 
} 
+1

Спасибо, человек! Его примерно n = n.nextSibling() ;. – Junior

Смежные вопросы