本文共 7216 字,大约阅读时间需要 24 分钟。
1. XML:
★XML格式:
<Alarmlock=”true”>
<Time>
StringValue
</Time>
</Alarm>
☆解析:
Alarm(元素节点);lock(属性节点);Time(元素节点)StringValue(文本节点)
☆元素节点(Element):Alarm,Time
☆节点(Node):Alarm,lock,Time,StringValue
★XML继承结构:
System.Object
System.Xml.XmlNode(表示XML节点)
System.Xml.XmlDocument(表示XML文档)
System.Xml.XmlAttribute(表示XML属性)
System.Xml.XmlLikedNode
System.Xml.XmlElement(表示XML元素)
★XML常用类:
♥XmlAttribute——XML属性类
♥XmlNode——XML节点类
☆InnerText:获取或设置节点及其所有子节点的值。(仅元素节点拥有)
☆Value:获取或设置节点的值(仅属性节点拥有)
☆AppendChild:将指定的节点添加到该节点的子节点列表的末尾
☆ChildNodes:获取节点的所有子节点
☆FirstChild:获取节点的第一个子节点
☆HasChildNodes:判断该节点是否有任何子节点
☆InnerText:获取或设置节点及其所有子节点值
☆SelectSingleNode:选择第一个XmlNode
♥XmlDocument——XML文件夹
☆CreateXmlDeclaration:创建一个具有指定值的XmlDeclaration节点
☆CreateElement:创建具有指定名称的元素
☆CreateNode:创建具有指定的节点类型、Name和NamespaceURI和XmlNode
☆AppendChild:将指定的节点添加到该节点的子节点列表末尾(继承自XmlNode)
☆Load:从指定的URL加载XML文档
☆LoadXml:从指定的字符串加载XML文档
☆Save:将XML文档保存到指定的文件夹。
♥:XmlElement: ——XML元素类
☆SetAttribute:设置指定名称的特性的值
☆HasAttribute:判断该元素节点是否具有属性
☆GetAttribute:返回具有指定名称的属性值
★XML数据生成步骤:(Unity引擎)
第一步:引用C#的命名空间System.Xml
第二步:生成XML文档(XmlDocument)
第三步:生成根元素(XmlElement类)添加给文档对象
第四步:循环生成子元素添加给父元素
第五步:将生成的XML文档保存
★实例:
C#脚本:
#region 用到的函数 /* Application:访问应用程序运行时数据。 * dataPath:包含游戏数据文件夹的路径(只读)。 * File.Exists(string path):判断是文件路径是否存在 * .CreateXmlDeclaration(string version,string encoding,string standalone): 创建声明某文档 * .SelectNodes(选择某节点所有子节点元素) * .SelectSingleNode().ChildNode (选择某个节点).(子节点元素) * XmlDocument: xml文档 * XmlNode : xml节点 * XmlElement:xml元素 * .CreateElement(strin name) : 创建xml元素 * .SetAttribute(string name,string value) :写属性 * ApendChild(XmlNode NewChild):添加孩子 * .InnerText{get;set;} : (属性)string类型。 某元素.文本节点 * AsseteDatabase.Refresh(); : 更新 资源数据库 * .Save(path); 保存某文档; * .Load(path); 得到(加载)某文档 * XmlNodeList :节点列表 * .Equals(string value) 某值等于value 等同于 == */#endregion/************************* * Title: "" * * Function: * * Author: v. * Date: 2018. * Version: 1.0 * Description: * *************************/using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;using System.Xml;#if UNITY_EDITORusing UnityEditor;#endifpublic class Data_XML : MonoBehaviour{ private string path; void Start() { path = Application.dataPath + "/1.XML/XMLData/ChatData.xml"; }//end_Start void Update() { if (Input.GetKeyDown(KeyCode.A)) { CreateXML(); } if (Input.GetKeyDown(KeyCode.B)) { AddXML(); } if (Input.GetKeyDown(KeyCode.C)) { UpDataXML(); } }//end_Update ///脚本运行后的XML文档/// 创建XML /// void CreateXML() { //如果不存在,那么创建 if (!File.Exists(path)) { //创建xml文档对象 XmlDocument doc = new XmlDocument(); //创建xml头 XmlNode xmlHead = doc.CreateXmlDeclaration("1.0","utf-8", null); //将xml头添加到文档对象 doc.AppendChild(xmlHead); //创建根节点 XmlElement root = doc.CreateElement("object"); //将根节点添加到xml当中 doc.AppendChild(root); //创建子节点 XmlElement element01 = doc.CreateElement("message"); //给子节点设置属性 element01.SetAttribute("id", "1001"); //添加到根节点中 root.AppendChild(element01); //创建子节点0101 XmlElement element0101 = doc.CreateElement("content"); //给子节点0101添加元素属性 element0101.SetAttribute("name", "The1"); //001添加文本节点 element0101.InnerText = "嗨,少年,你醒了吗?"; //将子节点添加到01节点当中 element01.AppendChild(element0101); 给子节点添加文本节点 //element01.InnerText = ""; //创建子节点0102.... XmlElement element0102 = doc.CreateElement("mission"); element0102.SetAttribute("name", "The2"); element0102.InnerText = "我是谁,我在哪里?"; element01.AppendChild(element0102); //保存成一个真正的文档 doc.Save(path);#if UNITY_EDITOR AssetDatabase.Refresh();#endif } else { print("文件已存在"); } } ////// 添加 /// void AddXML() {#if UNITY_EDITOR AssetDatabase.Refresh();#endif if (!File.Exists(path)) { return; } else { XmlDocument doc = new XmlDocument(); //加载指定路径的xml文件 doc.Load(path); //找到根节点 XmlNode root=doc.SelectSingleNode("object"); XmlElement e = doc.CreateElement("message01"); e.SetAttribute("id","1002"); root.AppendChild(e); XmlElement e1 = doc.CreateElement("content01"); e1.SetAttribute("name","The3"); e1.InnerText = "啊,头好疼"; e.AppendChild(e1); XmlElement e2 = doc.CreateElement("content02"); e2.SetAttribute("name","The4"); e2.InnerText = "想起来了,是他把我推下了悬崖"; e.AppendChild(e2); doc.Save(path);#if UNITY_EDITOR AssetDatabase.Refresh();#endif } } ////// 更新 /// void UpDataXML() { if (!File.Exists(path)) { return; } XmlDocument doc = new XmlDocument(); doc.Load(path); //得到object里所有的子节点 //XmlNodeList xmlNodes = doc.SelectNodes("object"); XmlNodeList xmlNode = doc.SelectSingleNode("object").ChildNodes; foreach (XmlElement xe in xmlNode) { if (xe.GetAttribute("id") == "1001") { xe.SetAttribute("id","1010"); foreach (XmlElement xe01 in xe.ChildNodes) { if (xe01.GetAttribute("name").Equals("The2")) { xe01.InnerText="没想到一觉醒来,以前的事情都忘了"; } } } } doc.Save(path); } ////// 读取 /// void ReadXML() { if (!File.Exists(path)) { return; } //创建集合 ArrayList al01 = new ArrayList(); ArrayList al02 = new ArrayList(); XmlDocument doc = new XmlDocument(); //得到xml文件 doc.Load(path); //得到根节点下所有的子节点 XmlNodeList nodes = doc.SelectSingleNode("object").ChildNodes; //遍历所有的子节点 foreach (XmlElement ex in nodes) { if (ex.GetAttribute("id").Equals("1001")) { foreach (XmlElement ex01 in ex.ChildNodes) { if (ex01.Name == "contents") { al01.Add(ex01.GetAttribute("name")+":"+ex01.InnerText); print(al01[0]); } if (ex01.GetAttribute("name") == "The2") { al02.Add(ex01.GetAttribute("name") + ":" + ex01.InnerText); print(al02[0]); } } } } }}
转载地址:https://blog.csdn.net/TL_1203/article/details/78988529 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!