xml是大家普遍使用的一种通用化的格式文件,那么这种格式到底有什么奥秘,今天我们就一起看看吧.

上图是一段xml用浏览器打开的显示格式,每一个箭头对应一个属性内容,当然,属性内容还可以多次嵌套,展开的一部分如上图所示.

以尖括号+ 名称 例如: 开始

以尖括号+/+名称,结束结束

第一行一般写xml的版本,编码格式,

以便后续或他人解析使用,编码格式不正确解析出来会出现各种问题,多空格或乱码等等.

第二行就是我们需要的数据名称,

属性例如:名称LotID,属性lotID,row,column =后面的就是该属性(名称)的值.

搞清楚这个,那么我们在写入,读取数据的时候就非常的方便,根据格式就可以轻松读写.

CMarkup xml;

xml.Load(xxxx)第一个函数xml的加载,load,读取xml文件,一般是X:\\xx\xx.xml(.XML)区分大小写后缀.

加载成功之后,我们就可以读取数据内容.

xml.IntoElem();加载之后,我们使用IntoItem()函数,进入下一次根目录,接着查找我们的属性名称,例如

BOOL bstr =xml.FindElem(_T("LotID"));

按照顺序,依次获取对应的属性,属性值.

xml.GetAttrib(XXX);获取对应属性的属性值.

if (bstr )

{

xml.IntoElem();

str= xml.FindElem(_T("MapData"));

xml.IntoElem();

str= xml.FindElem(_T("SubstrateMaps"));

xml.IntoElem();

}

当有多个重复属性名称时,我们可以使用循环去查找,例如我们想获取BinCode的值,就需要先找到overlay-->BinCodeMap--->BinCode,具体实现代码:

每一个IntoElem对应一个OutElem,而且必须是一一对应关系.

while (xml.FindElem(_T("SubstrateMap")))

{

SubStrateId=xml.GetAttrib(_T("SubstrateId"));

SubStrateType=xml.GetAttrib(_T("SubstrateType"));

xml.IntoElem();

int mappingIndex=0;

int oldmappingIndex=0;

while(xml.FindElem(_T("Overlay")))

{

mapName=xml.GetAttrib(_T("MapName"));

xml.IntoElem();

BOOL binMap=xml.FindElem(_T("BinCodeMap"));

{

CString strMap,strMapAll;

while(xml.FindChildElem(_T("BinCode")))

{

strMap=xml.GetChildData();

strMap.Remove(_T(''));

CString strErrorCode,strErrorCodeTemp;

int len=strMap.GetLength();

for(int i=0;i

{

TCHAR s = strMap.GetAt(i);

}

}xml.OutOfElem();

}xml.OutOfElem();

xml.OutOfElem();

xml.OutOfElem();

以上代码总共出现5个因此,结束时候也应该是5个OutOfElem();

读数据先查找FindElem,FindChildElem,根据名称我们就可以很好区分是子元素还是根目录元素,像这种BinCode就属于子元素,多次重复出现在多行的一般是子元素childElem,分开的 中间有间隔的多次出现的如SubstrateMap,SubstrateId这样的通常认为是Elem.

写的的时候就更简单,获取的数据,写到对应的属性值中就可以,

xml.AddElem()属性元素名称

xml.SetAttrib()属性名称

xml.SetElemContent();属性内容

子元素采用循环的方式写入对应的数据内容:BinCode的写入方法简例如下

CString strTemp;

for (int j=0;j

{

xml.AddChildElem(_T(“BinCode”));

strTemp=_T(“”);

for(int i=0;i

{

strTemp+=strResult.GetAt(i);

xml.SetChildData(strTemp);

}

}

bool ret=xml.Save(xxx.xml);

写完之后记得保存数据到文件就可以了

这样我们xml的读写就基本完成了,你学会了?

格式—>Load—>findElem–GetAttrib.