【转载】UE4 读取本地 XML 文件

474 阅读1分钟

本文转自:blog.csdn.net/qq992817263…

其实这里读取 XML 也是利用了 Tinyxml 来读取 xml ,主要是讲 Tinyxml 放在 UE4 中,遇到的一点点坑

  1. 先给出 Tinyxml 链接,可以下载他的工程

  2. 用 UE4 新建一个 C++ 工程,将下图的几个文件添加到 UE4 的工程中

  1. 并在 Tinyxml 的 cpp 文件中添加本工程的头文件,比如这里是
#include "MatineeProject.h" 
  1. 在 UE4 中的任意 C++ 文件中,Tinyxml 的头文件
#include "tinyxml.h"  
#include "tinystr.h" 
  1. 尝试利用 Tinyxml 的接口读取本地 xml ,主要注意一些变量类型的转换,UE4 是自己的一套变量类型,并不适用 Tinyxml
bool ReadXmlFile()  
{
     // 工程的相对路径+文件名称  
    FString _FilePath = FPaths::GameDir() + "test.xml";
    
     // 将 TCHAR 转换 char 并转 UTF-8 编码  
    int32 iLength = WideCharToMultiByte(CP_UTF8, 0, * _FilePath, - 1NULL0NULLNULL);
    char* path = new char[iLength + 1];
    WideCharToMultiByte(CP_UTF8, 0, * _FilePath, - 1, path, iLength, NULLNULL);

     // 创建一个 XML 的文档对象
    TiXmlDocument* myDocument = new TiXmlDocument();
    if(myDocument->LoadFile(path))  
    { 
         // 获得根元素  
        TiXmlElement *RootElement = myDocument->RootElement();

         // 将 char 转为 TCHAR utf-8 编码 支持中文  
        const char* outchar = RootElement->Value();
        iLength = MultiByteToWideChar(CP_UTF8, 0, outchar, strlen(outchar) + 1NULL0);
        TCHAR* outTchar = new TCHAR[iLength + 1];
          
        MultiByteToWideChar(CP_UTF8, 0, outchar, strlen(outchar) + 1, outTchar, iLength);
        GEngine->AddOnScreenDebugMessage(-110, FColor::Red, outTchar);
          
        return true;
    }
    else   
    {   
        return false;
    } 
} 
  1. 运行截图,其他的具体操作,google 百度 tinyxml 就可以了