Unity之XML的学习总结:
发布日期:2022-02-26 00:17:41 浏览次数:9 分类:技术文章

本文共 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    ///     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]);                    }                }            }        }    }}
脚本运行后的XML文档
嗨,少年,你醒了吗?
没想到一觉醒来,以前的事情都忘了
啊,头好疼
想起来了,是他把我推下了悬崖
啊,头好疼
想起来了,是他把我推下了悬崖

转载地址:https://blog.csdn.net/TL_1203/article/details/78988529 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaScript学习笔记---1
下一篇:unity之SQLite学习总结

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月03日 10时19分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

(精华)2020年9月25日 微服务 Ocelot自定义中间件 2019-04-26
(精华)2020年9月25日 微服务 限流算法 2019-04-26
(精华)2020年9月25日 微服务 API网关Ocelot的使用 2019-04-26
(精华)2020年9月23日 微服务 熔断降级的基本介绍和使用 2019-04-26
(精华)2020年9月22日 微服务 Consul工具层封装和使用 2019-04-26
(精华)2020年9月22日 微服务 Consul注册服务中心详解 2019-04-26
(精华)2020年9月22日 微服务 WebAPI详解 2019-04-26
(精华)2020年9月22日 微服务 Restful详解 2019-04-26
(精华)2020年9月22日 微服务 架构演变由来(图解) 2019-04-26
(精华)2020年9月21日 ASP.NET Core AutoMapper的使用 2019-04-26
(精华)2020年9月20日 ASP.NET Core MediatR进程内的消息通信框架的使用 2019-04-26
(精华)2020年9月20日 ASP.NET Core WebAPI数据协议GraphQL的使用 2019-04-26
(精华)2020年9月18日 ASP.NET Core 路由解析详解 2019-04-26
(更新时间)2021年3月24日 python基础知识(子类父类同名方法解析) 2019-04-26
(更新时间)2021年3月24日 python基础知识(多层继承) 2019-04-26
(更新时间)2021年3月24日 python基础知识(super()的使用) 2019-04-26
(更新时间)2021年3月24日 python基础知识(私有属性和私有方法) 2019-04-26
(更新时间)2021年3月25日 python基础知识(多态) 2019-04-26
(更新时间)2021年3月25日 python基础知识(类属性和实例属性) 2019-04-26
(更新时间)2021年3月26日 python基础知识(自定义异常) 2019-04-26