废话也不多说了,不懂XML的可以先看一下DOM,这里不再复述。
原文链接:https://www.f2er.com/xml/298432.html
直入主题:
分为两种方法:
首先,看test.xml
C++文件中的运行:
在head中先定义一个数组:float testPicture_[5];
在cpp中:
- void TiXml()@H_301_16@
- {@H_301_16@
- TiXmlDocument doc("test.xml");//定义test.xml文件@H_301_16@
@H_301_16@- bool loadOk = doc.LoadFile();//获取@H_301_16@
- if (!loadOk)@H_301_16@
- {@H_301_16@
- printf("load false!");@H_301_16@
- exit(-1);@H_301_16@
- }@H_301_16@
@H_301_16@- TiXmlElement* rootElement = doc.FirstChildElement("Root");//root@H_301_16@
- TiXmlElement* texturesElement = rootElement->FirstChildElement("Textures");//Textures@H_301_16@
- TiXmlAttribute* attrOfTexture = texturesElement->FirstChildElement()->FirstAttribute();//获得Texture的px属性@H_301_16@
@H_301_16@- while(attrOfTexture)//在Texture的属性中循环,否则跳出@H_301_16@
- {@H_301_16@
- for (int i = 0; i<5; ++i)@H_301_16@
- {@H_301_16@
- testPicture_[i] = atof(attrOfTexture->Value());//获取相应属性值@H_301_16@
- attrOfTexture = attrOfTexture->Next();//切换至下一个属性@H_301_16@
- printf("%.2f\n",testPicture_[i]);//输出标记@H_301_16@
- }@H_301_16@
- }@H_301_16@
- }@H_301_16@
首先是test.xml
然后一样在head中定义数组:
float
testPicture_[5];
在cpp中:
- void TiXml()@H_301_16@
- {@H_301_16@
- TiXmlDocument doc("test.xml");@H_301_16@
@H_301_16@- bool loadOk = doc.LoadFile();@H_301_16@
- if (!loadOk)@H_301_16@
- {@H_301_16@
- printf("load false!");@H_301_16@
- exit(-1);@H_301_16@
- }@H_301_16@
@H_301_16@- TiXmlElement* rootElement = doc.FirstChildElement("Root");//root@H_301_16@
- TiXmlElement* texturesElement = rootElement->FirstChildElement("Textures");//Textures@H_301_16@
- if(texturesElement)@H_301_16@
- {@H_301_16@
- testPicture_[0]
= atof(texturesElement->FirstChildElement("positionX")->GetText());@H_301_16@ testPicture_[1] = atof(texturesElement->FirstChildElement("positionY")->GetText());@H_301_16@ testPicture_[2] = atof(texturesElement->FirstChildElement("lengthX")->GetText()); @H_301_16@ testPicture_[3] = atof(texturesElement->FirstChildElement("lengthY")->GetText());@H_301_16@ testPicture_[4] = atof(texturesElement->FirstChildElement("alpha")->GetText());@H_301_16@ - }@H_301_16@
- }@H_301_16@
错误之处,还望指出谢谢!