diff --git a/Client/Assets/Scripts/Data/Define.cs b/Client/Assets/Scripts/Data/Define.cs index 5490d4b..69ac7f6 100644 --- a/Client/Assets/Scripts/Data/Define.cs +++ b/Client/Assets/Scripts/Data/Define.cs @@ -8,6 +8,7 @@ namespace Data public string defName; public string label; public string discription; + public string packID; /// /// 初始化方法,根据传入的 XML 元素 () 进行处理。 /// diff --git a/Client/Assets/Scripts/Data/DefineManager.cs b/Client/Assets/Scripts/Data/DefineManager.cs index 3e26eb7..80c1422 100644 --- a/Client/Assets/Scripts/Data/DefineManager.cs +++ b/Client/Assets/Scripts/Data/DefineManager.cs @@ -19,7 +19,7 @@ namespace Data public void Init() { // 加载所有 XML 文件路径 - var xmlFilePaths = FileHandler.LoadXmlFilesFromPaths(dataSetFilePath); + var xmlFilePaths = FileHandler.GetXmlFilePathsFromPaths(dataSetFilePath); // 遍历并加载每个 XML 文件 foreach (var xmlFilePath in xmlFilePaths) diff --git a/Client/Assets/Scripts/Data/DefinePack.cs b/Client/Assets/Scripts/Data/DefinePack.cs new file mode 100644 index 0000000..e14972d --- /dev/null +++ b/Client/Assets/Scripts/Data/DefinePack.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Xml; + +namespace Data +{ + public struct PackAbout + { + public string name; + public string description; + public string author; + } + public class DefinePack + { + public string packID; + public PackAbout packAbout; + public List defines; + + public void LoadPack(string packPath) + { + var packDatas=Utils.FileHandler.LoadXmlFromPath(packPath); + + } + /// + /// 从 ListXmlDocument 中查找指定根元素名称的文档。 + /// + /// XML 文档列表。 + /// 目标根元素名称。 + /// 符合条件的 XML 文档列表。 + public static List FindDocumentsWithRootName(List xmlDocuments, string rootName) + { + var result = new List(); + + foreach (var xmlDoc in xmlDocuments) + { + try + { + // 获取根节点 + var root = xmlDoc.DocumentElement; + + if (root != null && root.Name == rootName) + { + // 如果根节点名称匹配,则添加到结果列表 + result.Add(xmlDoc); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"处理 XML 文档时发生错误: {ex.Message}"); + } + } + + return result; + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/DefineSourceData.cs.meta b/Client/Assets/Scripts/Data/DefinePack.cs.meta similarity index 100% rename from Client/Assets/Scripts/Data/DefineSourceData.cs.meta rename to Client/Assets/Scripts/Data/DefinePack.cs.meta diff --git a/Client/Assets/Scripts/Data/DefineSourceData.cs b/Client/Assets/Scripts/Data/DefineSourceData.cs deleted file mode 100644 index 233d3f0..0000000 --- a/Client/Assets/Scripts/Data/DefineSourceData.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Data -{ - public class DefineSourceData - { - public string className; - public string defName; - public string label; - public string discription; - - - } -} \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/FileHandler.cs b/Client/Assets/Scripts/Utils/FileHandler.cs index 3e97b41..9253f5f 100644 --- a/Client/Assets/Scripts/Utils/FileHandler.cs +++ b/Client/Assets/Scripts/Utils/FileHandler.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.IO; +using System.Xml; using Newtonsoft.Json; using UnityEngine; +using Formatting = Newtonsoft.Json.Formatting; namespace Utils { @@ -158,7 +160,7 @@ namespace Utils /// /// 文件夹路径 /// - public static List LoadXmlFilesFromPaths(string[] paths) + public static List GetXmlFilePathsFromPaths(string[] paths) { var xmlFilePaths = new List(); @@ -194,6 +196,56 @@ namespace Utils return xmlFilePaths; } + + /// + /// 从指定路径加载所有 XML 文件并解析为 XmlDocument 对象。 + /// + /// 文件夹路径数组。 + /// 包含所有解析后的 XmlDocument 对象的列表。 + public static List LoadXmlFromPaths(string[] paths) + { + var xmlDocuments = new List(); + var xmlFilePaths = GetXmlFilePathsFromPaths(paths); + + foreach (var filePath in xmlFilePaths) + { + try + { + // 创建一个新的 XmlDocument 实例 + var xmlDoc = new XmlDocument(); + + // 加载 XML 文件内容 + xmlDoc.Load(filePath); + + // 将解析后的 XmlDocument 添加到结果列表中 + xmlDocuments.Add(xmlDoc); + } + catch (Exception ex) + { + Console.Error.WriteLine($"加载 XML 文件 {filePath} 时发生错误: {ex.Message}"); + } + } + + return xmlDocuments; + } + /// + /// 获取指定单个路径下的所有 XML 文件。 + /// + /// 文件夹路径。 + /// 包含所有 XML 文件路径的列表。 + public static List GetXmlFilePathsFromPath(string path) + { + return GetXmlFilePathsFromPaths(new[] { path }); + } + /// + /// 从指定单个路径加载所有 XML 文件并解析为 XmlDocument 对象。 + /// + /// 文件夹路径。 + /// 包含所有解析后的 XmlDocument 对象的列表。 + public static List LoadXmlFromPath(string path) + { + return LoadXmlFromPaths(new[] { path }); + } } } \ No newline at end of file