在QT中的XML解析

问题描述:

我是QT的新手在QT中的XML解析

我正在开发应用程序来解析XML文件。但文件格式看起来像这样

<Class name="ABC"> 
    <LayoutEntry name="ABB"   type="class:ABB"/> 
    <LayoutEntry name="ACC"   type="class:ACC"/> 
    <LayoutEntry name="ADD"   type="class:ADD"/> 
</Class> 

<Class name="ABB"> //Declared in class ABC 
    <LayoutEntry name="ABB1"   type="class:ABB1"/> 
    <LayoutEntry name="ABB2"   type="class:ABB2"/> 
    </Class> 

    <Class name="ABB1"> //Declared in class ABB 
    <LayoutEntry name="ABB1"   value=ABB1"/> 
    </Class> 

    <Class name="ABB2"> 
    <LayoutEntry name="ABB2"   value=ABB2"/> 
    </Class> 

请有人建议我为QT中的任何库或方法来解析这种类型的XML。 谢谢

您可以使用模块QtXML 5.8,它是Qt框架的一部分。在那里,你可以找到类QDomDocument(QDomDocument-doc)例如。

+0

但是我使用QT 3 –

+0

的LIB是QT3的一部分。 – KimKulling

您可以使用QDomDocument和所有以qDom开头的课程。 这样你可以得到一个对应于你的文档的对象。 每个标记都将是QDomNode,您可以调用方法,如getParam,getChild或getParent。

  QDomNodeList list; 
      list = document.elementsByTagName("Parent"); 
      int ChildCount = list.at(0).childNodes().count(); 
      qDebug() << "ChildCount = " << ChildCount; 
      QString child1,child2,child3; 
      for(int i=0; i < ChildCount; i++) 
      { 
      child1 = list.at(0).childNodes().at(0).toElement().text(); 
      child2 = list.at(0).childNodes().at(1).toElement().text(); 
      child3 = list.at(0).childNodes().at(2).toElement().text(); 
      }