【问题标题】:XML parsing in QTQT 中的 XML 解析
【发布时间】:2017-01-30 12:55:06
【问题描述】:

我是 QT 新手

我正在开发应用程序来解析 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 。 谢谢

【问题讨论】:

    标签: c++ xml qt xml-parsing qtxml


    【解决方案1】:

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

    【讨论】:

    • 但我使用的是 QT 3
    • 该库也是 Qt3 的一部分。
    【解决方案2】:

    您可以使用QDomDocument 和所有以 qDom 开头的类。 这样您就可以获得与您的文档相对应的对象。 每个标记都是QDomNode,您可以调用getParam、getChild 或getParent 等方法。

    【讨论】:

      【解决方案3】:
                 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();
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-06
        • 2013-07-11
        • 2012-10-06
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2017-10-09
        • 1970-01-01
        相关资源
        最近更新 更多