其实这里读取XML也是利用了Tinyxml来读取xml,主要是讲Tinyxml放在UE4中,遇到的一点点坑
1.先给出Tinyxml链接:http://www.grinninglizard.com/tinyxml/,可以下载他的工程
2.用UE4新建一个C++工程,将下图的几个文件添加到UE4.的工程中
![](https://img-blog.csdn.net/20160920150843455?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.并在tinyxml的cpp文件中添加本工程的头文件,比如这里是
- #include "MatineeProject.h"
4.在UE4中的任意C++文件中,tinyxml的头文件
- #include "tinyxml.h"
- #include "tinystr.h"
5.尝试利用tinyxml的接口读取本地xml,主要注意一些变量类型的转换,UE4是自己的一套变量类型,并不适用tinyxml
- bool ReadXmlFile()
- {
-
- FString _FilePath= FPaths::GameDir() +"test.xml";
-
-
- int32 iLength = WideCharToMultiByte(CP_UTF8, 0, *_FilePath, -1, NULL, 0, NULL, NULL);
- char* path=new char[iLength+1];
- WideCharToMultiByte(CP_UTF8, 0, *_FilePath, -1, path, iLength, NULL, NULL);
-
-
- TiXmlDocument *myDocument = new TiXmlDocument();
- if (myDocument->LoadFile(path))
- {
-
- TiXmlElement *RootElement = myDocument->RootElement();
-
-
- const char* outchar = RootElement->Value();
- iLength = MultiByteToWideChar(CP_UTF8, 0, outchar, strlen(outchar) + 1, NULL, 0);
- TCHAR* outTchar = new TCHAR[iLength + 1];
- MultiByteToWideChar(CP_UTF8, 0, outchar, strlen(outchar) + 1, outTchar, iLength);
-
- GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, outTchar);
- return true;
- }
- else
- {
- return false;
- }
- }
6.运行截图,其他的具体操作,google百度tinyxml就可以了
![](https://img-blog.csdn.net/20160920152136274?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
本文转自:http://blog.csdn.net/qq992817263/article/details/52595906