c++读取XML数据,该怎么处理

c++读取XML数据
xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<Position>
  <P1>
    <ON value1="1B" value2="24" value3="0D" value4="05" value5="04" value6="00" value7="0E" value8="00" value9="03" value10="01" value11="98"></ON>
    <DOWN value1="1B" value2="24" value3="0D" value4="05" value5="04" value6="00" value7="0F" value8="00" value9="03" value10="01" value11="97"></DOWN>
  </P1>
</Position>

现写一个C++程序,通过读取xml文件
BYTE on[11]={1B,。。。。};
BYTE down[11]={1B,。。。。};
求指点。。
------解决方案--------------------
该回复于2012-04-18 13:09:00被版主删除

------解决方案--------------------
CMarkUp xml;
xml.Load(strFileName);
xml.ResePos();
while(xml.FindChildElem())
{
//这里面就不知道了。
}
------解决方案--------------------
while(xml.FindChildElem(_T("ON")))
{
   on[0] = (16进制转换函数) xml.GetAttrib("value1");
   on[1] = (16进制转换代码) xml.GetAttrib("value2");
   。。。
}

------解决方案--------------------
tinyxml , msxml, cmarkup 太多类库了

XML解析库-tinyxml,MSXML相关技术文章资料汇总 
------解决方案--------------------
CMarkUp xml;
CString str;
xml.Load(strFileName);
xml.ResePos();
xml.FindElem(); //
xml.IntoElem();//进入Position
xml.FindElem(_T("P1")); //
xml.IntoElem();//进入P1
if(xml.FindElem(_T("ON")))
{
xml.IntoElem();
for(int i=0;i<11;i++)
{
str.Format(_T("value%d"),i+1);
on[i] = _ttoi(xml.GetAttrib(str));
}
xml.OutOfElem();
}
if(xml.FindElem(_T("DOWN")))
{
xml.IntoElem();
for(int i=0;i<11;i++)
{
str.Format(_T("value%d"),i+1);
down[i] = _ttoi(xml.GetAttrib(str));
}
xml.OutOfElem();
}

CMarkup,很好用的,楼主去看看教程。这段代码你试试