xml文件读取

 xml文件读取

利用库tinyxml

 

示例xml



long intobjectnum = 0;

    int i;

    float* regnum;

 

    TiXmlDocument*Document = new TiXmlDocument();

    Document-> LoadFile(xmlpath);//获取对应路径上的xml

    if(Document==NULL) 

    { 

       AfxMessageBox("读取XML文件失败"); 

        return FALSE; 

    } 

   TiXmlElement* nodeElement=Document->RootElement();//获取根节点

   TiXmlElement* objectElement=nodeElement->FirstChildElement();//获取一级子节点

 

    // objectElement指针为空则读到末尾了,获得object数量,

    while(objectElement)

    {

        objectnum++;

        objectElement= objectElement->NextSiblingElement();//获取同级别下一个节点

    }

 

    m_nRegionNum= objectnum;

    reginfo = new REGIONINFO[m_nRegionNum];

    regnum = new float[m_nRegionNum];

    //读取信息

    objectElement=nodeElement->FirstChildElement();//获取子节点

    objectnum =0;

    while(objectElement)

    {

        TiXmlElement* RegionNoElement =objectElement->FirstChildElement();//获取RegionNo节点

        reginfo[objectnum].RegionNo= atof(RegionNoElement->GetText());//转换格式

        regnum[objectnum]= reginfo[objectnum].RegionNo;

 

        TiXmlElement*PixelNumElement = RegionNoElement->NextSiblingElement();      reginfo[objectnum].PointCount =atoi(PixelNumElement->GetText());

 

       

        TiXmlElement*BandSumElement = PixelNumElement->NextSiblingElement();      TiXmlElement* BandSum1Element = BandSumElement->FirstChildElement();

        reginfo[objectnum].GraySum[0]= atof(BandSum1Element->GetText());

        for(i=1; i<bandnum; i++)

        {

           BandSum1Element =BandSum1Element->NextSiblingElement();

           reginfo[objectnum].GraySum[i] =atof(BandSum1Element->GetText());

           if(i>=3)

               break;

        }

 

        TiXmlElement*Band2SumElement = BandSumElement->NextSiblingElement();

        TiXmlElement*Band2Sum1Element = Band2SumElement->FirstChildElement();

        reginfo[objectnum].Gray2Sum[0]= atof(Band2Sum1Element->GetText());

        for(i=1;i<bandnum; i++)

        {

           Band2Sum1Element =Band2Sum1Element->NextSiblingElement();

           reginfo[objectnum].Gray2Sum[i] =atof(Band2Sum1Element->GetText());

            if(i>=3)

               break;

        }

 

        TiXmlElement*OutRectElement = Band2SumElement->NextSiblingElement();

        TiXmlElement*LeftXElement = OutRectElement->FirstChildElement();

        reginfo[objectnum].DirtyRect.Left= atoi(LeftXElement->GetText());

 

        TiXmlElement*LeftYElement = LeftXElement->NextSiblingElement();

        reginfo[objectnum].DirtyRect.Bottom= atoi(LeftYElement->GetText());

 

        TiXmlElement*RightXElement = LeftYElement->NextSiblingElement();

        reginfo[objectnum].DirtyRect.Right= atoi(RightXElement->GetText());

 

       TiXmlElement* RightYElement = RightXElement->NextSiblingElement();

        reginfo[objectnum].DirtyRect.Top= atoi(RightYElement->GetText());

 

        objectnum++;

        //读取下一个object

        objectElement= objectElement->NextSiblingElement();

    }

    delete Document;//记得释放内存,这个指针占用大量内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值