【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml
2024-09-05 22:08:35
XmlParser 简单读取
XmlParser 为引擎自带模块
XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<Movie Name="悬崖之上">
<Category>剧情/悬疑/动作</Category>
<Director>张艺谋</Director>
<Time>2021-04-30</Time>
</Movie>
build.cs 添加 XmlParser 模块
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG", "Json","XmlParser" });
读取数据
引擎支持读写操作,写入操作可以通过 SetContent 和 AppendChildNode进行扩展。代码中的一些方法为私有,可见引擎建议进行读取操作。
FXmlFile
- LoadFile
- Clear
- IsValid
- GetRootNode
- Save
FXmlNode
- GetNextNode
- GetChildrenNodes
- GetFirstChildNode
- FindChildNode
- GetTag
- GetContent
- SetContent
- GetAttributes
- GetAttribute
- AppendChildNode
简单实现
FString XmlPath = FPaths::ProjectDir() + TEXT("DataDrive/Movies.xml");
XmlPath = FPaths::ConvertRelativePathToFull(XmlPath);
if (FPaths::FileExists(XmlPath))
{
FXmlFile* XmlFile = new FXmlFile(XmlPath);
// 获取根节点
FXmlNode* RootNode = XmlFile->GetRootNode();
// 获取属性值
FString MovieName = RootNode->GetAttribute(TEXT("Name")); // 获取子节点
FXmlNode* CategoryNode = RootNode->FindChildNode(TEXT("Category"));
// 获取子节点的值
FString MovieCategory = CategoryNode->GetContent(); FString MovieDirector = RootNode->FindChildNode(TEXT("Director"))->GetContent();
FString MovieTime = RootNode->FindChildNode(TEXT("Time"))->GetContent(); UE_LOG(LogTemp, Warning, TEXT("%s\t%s\t%s\t%s\t"), *MovieName, *MovieCategory, *MovieDirector, *MovieTime);
}
使用 tinyxml第三方库
待续
最新文章
- DDD 领域驱动设计-如何控制业务流程?
- ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名
- 小技巧:addobject: 和 addobjectsFromArray 的区别
- HDU 4049 Tourism Planning(动态规划)
- hdu 2054
- easyui知识累计.递增.
- Firefly 配置说明
- 【转】Django+Mysql安装配置详解(Linux)
- ios开发中button控件的属性及常见问题
- openjdk
- 1004 Let the Balloon Rise
- JavaScript 之DOM&;BOM
- [COGS 2401]Time is Money
- Linux基础 -Ubuntu
- Java开发笔记(六)特殊数字的表达
- Ubuntu英文变为中文
- [iOS]一行代码集成空白页面占位图(基于runtime+MJRefresh思想)
- 基于junit的单元测试类编写
- Unity3d粒子系统详解
- Centos下PPTP环境部署记录
热门文章
- Identity角色管理五(添加用户到角色组)
- easyui修复浏览器刷新后,tab页全部关闭的问题
- SQL Server Management Studio --- SSMS语言更换
- oracle table()函数
- 为什么要设置GOROOT/GOPATH
- 解决git bash闪退问题 报openssl错误
- 编译执行 VS 解释执行
- Xamarin UIProgressView自定义
- java.net.NoRouteToHostException: Cannot assign requested address
- 剑指offer计划19( 搜索与回溯算法中等)---java