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

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

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

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

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

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

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

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

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

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

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

节点元素则比较容易理解,但是调用配置文件中写起来比较麻烦,各自所需嘛。
错误之处,还望指出谢谢!
原文链接:https://www.f2er.com/xml/298432.html

猜你在找的XML相关文章