您的位置:首页 > 其它

xml文件读取

2015-07-13 21:01 337 查看
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;//记得释放内存,这个指针占用大量内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: