XML的简单学习(一个优秀的mini库…

前端之家收集整理的这篇文章主要介绍了XML的简单学习(一个优秀的mini库…前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
废话也不多说了,不懂XML的可以先看一下DOM,这里不再复述。
直入主题
分为两种方法

第一种方法:定义属性Attribute
首先,看test.xml
  1. <Root>
  2. <Textures>
  3. <Texture px="456" py="312" lx="320" ly="200" ap="1"/>
  4. </Textures>
  5. </Root>

C++文件中的运行:
在head中先定义一个数组:float testPicture_[5];
在cpp中:
  1. void TiXml()
  2. {
  3. TiXmlDocument doc("test.xml");//定义test.xml文件

  4. bool loadOk = doc.LoadFile();//获取
  5. if (!loadOk)
  6. {
  7. printf("load false!");
  8. exit(-1);
  9. }

  10. TiXmlElement* rootElement = doc.FirstChildElement("Root");//root
  11. TiXmlElement* texturesElement = rootElement->FirstChildElement("Textures");//Textures
  12. TiXmlAttribute* attrOfTexture = texturesElement->FirstChildElement()->FirstAttribute();//获得Texture的px属性

  13. while(attrOfTexture)//在Texture的属性中循环,否则跳出
  14. {
  15. for (int i = 0; i<5; ++i)
  16. {
  17. testPicture_[i] = atof(attrOfTexture->Value());//获取相应属性
  18. attrOfTexture = attrOfTexture->Next();//切换至下一个属性
  19. printf("%.2f\n",testPicture_[i]);//输出标记
  20. }
  21. }

第二种方法:直接定义节点元素方法
首先是test.xml
  1. <Root>
  2. <Textures>
  3. <positionX>456</positionX>
  4. <positionY>312</positionY>
  5. <lengthX>320</lengthX>
  6. <lengthY>200</lengthY>
  7. <alpha>1</alpha>
  8. </Textures>
  9. </Root>

然后一样在head中定义数组: float testPicture_[5];
在cpp中:
  1. void TiXml()
  2. {
  3. TiXmlDocument doc("test.xml");

  4. bool loadOk = doc.LoadFile();
  5. if (!loadOk)
  6. {
  7. printf("load false!");
  8. exit(-1);
  9. }

  10. TiXmlElement* rootElement = doc.FirstChildElement("Root");//root
  11. TiXmlElement* texturesElement = rootElement->FirstChildElement("Textures");//Textures
  12. if(texturesElement)
  13. {
  14. testPicture_[0]= atof(texturesElement->FirstChildElement("positionX")->GetText());
  15. testPicture_[1]= atof(texturesElement->FirstChildElement("positionY")->GetText());
  16. testPicture_[2]= atof(texturesElement->FirstChildElement("lengthX")->GetText());
  17. testPicture_[3]= atof(texturesElement->FirstChildElement("lengthY")->GetText());
  18. testPicture_[4]= atof(texturesElement->FirstChildElement("alpha")->GetText());
  19. }
  20. }

节点元素则比较容易理解,但是调用配置文件中写起来比较麻烦,各自所需嘛。
错误之处,还望指出谢谢!

猜你在找的XML相关文章