7.总结
7.1 知识点
总结主要内容
学习内容回顾
优点
缺点
主要用处
7.2 核心要点速览
读取 XML 文件
操作 | 关键类/方法 | 代码示例 | 说明 |
---|---|---|---|
创建文档对象 | XmlDocument 构造函数 | XmlDocument xmlDoc = new XmlDocument(); | 初始化 XML 文档对象 |
加载字符串 XML | XmlDocument.LoadXml() | xmlDoc.LoadXml(textAsset.text); | 从 Resources 加载文本字符串(如 TextAsset) |
加载路径 XML | XmlDocument.Load() | xmlDoc.Load(Application.streamingAssetsPath + “/TestXml.xml”); | 从 StreamingAssets 加载文件路径(打包后可用) |
获取根节点 | XmlDocument.SelectSingleNode() | XmlNode root = xmlDoc.SelectSingleNode(“Root”); | 通过 XPath 路径获取根节点(如 “Root”) |
获取子节点内容 | XmlNode.InnerText | string name = root.SelectSingleNode(“name”).InnerText; | 获取节点包裹的文本(如 |
获取属性值(中括号) | XmlNode.Attributes[“属性名”].Value | string id = node.Attributes[“id”].Value; | 通过属性名直接获取属性值(如 id=”1”) |
获取属性值(方法) | XmlNode.Attributes.GetNamedItem() | string num = node.Attributes.GetNamedItem(“num”).Value; | 通过方法获取属性值(适合动态属性名) |
获取同名节点列表 | XmlNode.SelectNodes() | XmlNodeList friends = root.SelectNodes(“Friend”); | 获取指定名称的所有子节点(如多个 |
遍历节点列表 | foreach/for 循环 | foreach (XmlNode friend in friends) { Debug.Log(friend.SelectSingleNode(“name”).InnerText);} | 遍历节点列表并输出子节点文本 |
存储 XML 文件
步骤 | 关键类/方法 | 代码示例 | 说明 |
---|---|---|---|
选择存储路径 | Application.persistentDataPath | string path = Application.persistentDataPath + “/Player.xml”; | 唯一全平台可读可写路径(推荐) |
创建文档对象 | XmlDocument 构造函数 | XmlDocument xmlDoc = new XmlDocument(); | 初始化空文档 |
添加版本声明 | XmlDocument.CreateXmlDeclaration() | XmlDeclaration dec = xmlDoc.CreateXmlDeclaration(“1.0”, “UTF-8”, “”); | 添加 XML 头部声明() |
创建根节点 | XmlDocument.CreateElement() | XmlElement root = xmlDoc.CreateElement(“Root”); | 创建根节点(如 |
添加子节点及属性 | XmlElement.SetAttribute() | root.SetAttribute(“id”, “1”); XmlElement child = xmlDoc.CreateElement(“Child”); child.InnerText = “内容”; root.AppendChild(child); |
设置属性(如 id=”1”)并添加子节点 |
保存文件 | XmlDocument.Save() | xmlDoc.Save(path); | 写入磁盘(需权限,persistentDataPath 自动获得) |
修改 XML 文件
操作 | 关键类/方法 | 代码示例 | 说明 |
---|---|---|---|
判断文件存在 | File.Exists() | if (File.Exists(path)) { … } | 避免空文件异常 |
加载现有文件 | XmlDocument.Load() | XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); |
读取已存在的 XML 文件 |
移除节点 | XmlNode.RemoveChild() | XmlNode node = root.SelectSingleNode(“Child”); if (node != null) root.RemoveChild(node); |
删除指定子节点 |
保存修改 | XmlDocument.Save() | xmlDoc.Save(path); | 覆盖原文件(谨慎操作,建议备份) |
路径选择对比
路径 | 可读 | 可写 | 打包后访问 | 适用场景 |
---|---|---|---|---|
Resources | ✔️ | ❌ | ❌(加密) | 只读配置(如初始 XML) |
StreamingAssets | ✔️ | ❌(部分平台) | ✔️ | 只读资源(如内置 XML) |
Application.persistentDataPath | ✔️ | ✔️ | ✔️ | 玩家存档(推荐) |
Application.dataPath | ✔️ | ❌ | ❌ | 编辑器调试(勿用于发布) |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com