C/C++教程

【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml

本文主要是介绍【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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第三方库

tinyxml

待续

这篇关于【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!