zoukankan      html  css  js  c++  java
  • Qt QtXml读取xml文件内容

    Qt QtXml读取xml文件内容

    xml文件内容

    <?xml version="1.0" encoding="UTF-8"?>
    <YG_RTLS>
        <Anchor_list>
            <Anchor z="0" id="1" MA_ID="" y="1789" x="50" ant_dly="" type="2"/>
            <Anchor z="0" id="2" MA_ID="" y="1840" x="2970" ant_dly="" type="2"/>
            <Anchor z="0" id="3" MA_ID="" y="70" x="2940" ant_dly="" type="2"/>
            <Anchor z="0" id="4" MA_ID="" y="9" x="-19" ant_dly="" type="2"/>
        </Anchor_list>
        <Anchor_Group id="1" map_id="0" type="2">
            <Member id="1"/>
            <Member id="2"/>
            <Member id="3"/>
            <Member id="4"/>
        </Anchor_Group>
        <CONFIG version="1"/>
    </YG_RTLS>
    //读取基站配置文件数据
    void readSysConfigFileData(QString sysConfigFileName)
    {
        //打开或创建文件
        QFile xmlFile(sysConfigFileName);
        if (!xmlFile.open(QFile::ReadOnly))
        {
            return;
        }
    
        QDomDocument docXML;
        if (!docXML.setContent(&xmlFile))
        {
            xmlFile.close();
            return;
        }
        xmlFile.close();
    
        QDomElement xmlRoot = docXML.documentElement(); //返回根节点
        QDomNode domNode = xmlRoot.firstChild(); //获得第一个子节点
        while (!domNode.isNull())  //如果节点不空
        {
            if (domNode.isElement()) //如果节点是元素
            {
                QDomElement domElement = domNode.toElement(); //转换为元素,注意元素和节点是两个数据结构,其实差不多
                QDomNodeList list = domElementchildNodes();
                for (int i = 0; i<list.count(); i++) //遍历子元素,count和size都可以用,可用于标签数计数
                {
                    QDomNode nodeIndex = list.at(i);
                    if (domNode.isElement())
                    {
                        QDomElement indexElement = nodeIndex.toElement();
                        if (indexElement.hasAttribute("x")) 
                        {
                            qDebug() << nodeIndex.nodeName() << ":" << nodeIndex.toElement().attribute("id") << "  " << nodeIndex.toElement().attribute("x") << "  " << nodeIndex.toElement().attribute("y") << "  " << nodeIndex.toElement().attribute("z");
    
                        }
    
                    }
                }
            }
            //下一个兄弟节点,nextSiblingElement()是下一个兄弟元素
            domNode = domNode.nextSibling(); 
        }
    
    
    }

    输出

    "Anchor" : "1" "50" "1789" "0"
    "Anchor" : "2" "2970" "1840" "0"
    "Anchor" : "3" "2940" "70" "0"
    "Anchor" : "4" "-19" "9" "0"

    -------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    使用 JDBC 驱动程序
    (转载)SQL Server 2008 连接JDBC详细图文教程
    (转载)VB中ByVal与ByRef的区别
    (转载)Java里新建数组及ArrayList java不允许泛型数组
    在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)
    近期计划
    在服务器上使用python-gym出现的关于显示的问题
    字符串匹配
    Ubuntu18.04 桌面系统的个人吐槽(主要是终端)
    Ubuntu18.04上安装N卡驱动、CUDA、CUDNN三连
  • 原文地址:https://www.cnblogs.com/herd/p/11897680.html
Copyright © 2011-2022 走看看