Unity-Xml

作者: 玄策丶 | 来源:发表于2019-06-17 17:22 被阅读0次

    txt:word = Resources.Load("Test").ToString();

    xml

    //工程文件下
    path1 = System.IO.Directory.GetCurrentDirectory() + "\\Test.xml";
    XmlDocument doc1 = new XmlDocument();
    doc1.Load(path1);
    XmlNodeList xmlNodeList1 = doc1.SelectSingleNode("HeadSelect").ChildNodes;
    foreach (XmlElement xe01 in xmlNodeList1)
            {
                if (xe01.Name == "COM")
                {
                    string com1 = xe01.GetAttribute("com");
                }
            }
    

    Xml练习练习

    /***********************
     * Title:   ""
     * Func:    
     * - 遇见你的眉眼,如清风明月,在似曾相识的凡间.
     * UsedBy:  
     * Date:    2017.
     * Author:  L.
     * Version: 1.0
     * Description:
     ***********************/
    using UnityEngine;
    using System.Collections;
    using System.IO;
    using System.Xml;
    using UnityEditor;
    public class Date_XML : MonoBehaviour
    {
        private string path;
        private ArrayList aL_01 = new ArrayList();
        private ArrayList aL_02 = new ArrayList();
    
        void Start()
        {
            path = Application.dataPath + "/5.xml/XMLData/ChatData.xml";
        }//end_Start
    
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.C))
            {
                CreateXML();
            }
            if (Input.GetKeyDown(KeyCode.L))
            {
                LoadXML();
            }
            if (Input.GetKeyDown(KeyCode.A))
            {
                AddXML();
            }
            if (Input.GetKeyDown(KeyCode.U))
            {
                UpdateXML();
            }
    
        }//end_Update
    
        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("objects");
                //把根节点添加到文档中
                doc.AppendChild(root);
    
                //创建子节点01
                XmlElement el01 = doc.CreateElement("messages");
                //给子节点设置属性
                el01.SetAttribute("id", "01");
                //把子节点添加到根节点间中
                root.AppendChild(el01);
    
                //创建子节点0101,给子节点设置属性,再将子节点添加到某个节点中
                XmlElement el0101 = doc.CreateElement("contents");
                el0101.SetAttribute("name", "大个儿");
                //给元素注入文本节点
                el0101.InnerText = ("嗨,安超,你醒了!");
                el01.AppendChild(el0101);
    
                //创建子节点0202....
                XmlElement el0102 = doc.CreateElement("missions");
                el0102.SetAttribute("name", "安超");
                el0102.InnerText = ("你昨天晚上对我做了什么?");
                el01.AppendChild(el0102);
    
                //保存成一个真正的文档
                doc.Save(path);
                //刷新视图
    #if UNITY_EDITOR
                AssetDatabase.Refresh();
    #endif
    
            }
        }
    
        void LoadXML()
        {
    
            if (!File.Exists(path))
            {
                print("文件不存在");
                return;
            }
            //假如存在的话.创建一个xml对象
            XmlDocument doc = new XmlDocument();
            //得到xml文件
            doc.Load(path);
            //得到根节点下的所有节点
            XmlNodeList xmlNodeList = doc.SelectSingleNode("objects").ChildNodes;
            //遍历所有的节点
            foreach (XmlElement xe_01 in xmlNodeList)
            {
                if (xe_01.GetAttribute("id").Equals("01"))
                {
                    foreach (XmlElement xe_02 in xe_01.ChildNodes)
                    {
                        //得到1节点里面的内容,放到一个ArrayList数组中
                        if (xe_02.GetAttribute("name") == "大个儿")
                        {
                            aL_01.Add(xe_02.GetAttribute("name")
                                         + ":" + xe_02.InnerText);
                            foreach (var item in aL_01)
                            {
                                print(item);
                            }
                        }
                        if (xe_02.Name == "missions")
                        {
                            aL_02.Add(xe_02.GetAttribute("name") + ":" + xe_02.InnerText);
                            foreach (var item in aL_02)
                            {
                                print(item);
                            }
                        }
                    }
                }
            }
        }
    
        void UpdateXML()
        {
            if (!File.Exists(path))
            {
                return;
            }
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
    
            //得到objects所有的节点
            XmlNodeList xmlNodeList = doc.SelectSingleNode("objects").ChildNodes;
            foreach (XmlElement xe01 in xmlNodeList)
            {
                if (xe01.GetAttribute("id")=="01")
                {
                    xe01.SetAttribute("id", "001");
                    foreach (XmlElement xe02 in xe01.ChildNodes)
                    {
                        if (xe02.GetAttribute("name").Equals("大个儿"))
                        {
                            xe02.SetAttribute("name", "傻吊吊");
                            xe02.InnerText=("安超,你屁股没事吧");
                        }
                    }
                }
            }
            doc.Save(path);
        }
    
        void AddXML()
        {
            if (!File.Exists(path))
            {
                print("文件不存在");
                return;
            }
            //假如存在的话.创建一个xml对象
            XmlDocument doc = new XmlDocument();
            //得到xml文件
            doc.Load(path);
            //找到根节点
            XmlNode root = doc.SelectSingleNode("objects");
    
            //在根节点下创建子节点
            XmlElement e = doc.CreateElement("messages01");
            e.SetAttribute("id", "02");
            root.AppendChild(e);
    
            //在子节点下再创建文本节点
            XmlElement e_1 = doc.CreateElement("contents01");
            e_1.SetAttribute("name", "the4");
            e_1.InnerText=("啊,我记起来了!");
            e.AppendChild(e_1);
    
            XmlElement e_2 = doc.CreateElement("mession01");
            e_2.SetAttribute("name", "the5");
            e_2.InnerText = ("你坏坏!");
            e.AppendChild(e_2);
    
            //保存文档
            doc.Save(path);
        }
    }
    

    xml文件练习1

    <?xml version="1.0" encoding="UTF-8"?>
    <objects>
      <messages id="001">
        <contents name="傻吊吊">安超,你屁股没事吧</contents>
        <missions name="安超">你昨天晚上对我做了什么?</missions>
      </messages>
      <messages01 id="02">
        <contents01 name="the4">啊,我记起来了!</contents01>
        <mession01 name="the5">你坏坏!</mession01>
      </messages01>
    </objects>
    

    xml练习2

    <?xml version="1.0" encoding="UTF-8"?>
    <gameobject name="Cube">
      <!--根节点 属性节点 元素节点 文本节点-->>
      <transform>
        <position>
          <x>10</x>
          <y>0 </y>
          <z>10</z>
        </position>
        <rotation>
          <x>0</x>
          <y>0</y>
          <z>0</z>
        </rotation>
        <Scale>
          <x>1</x>
          <y>1</y>
          <z>1</z>
        </Scale>
      </transform>
      <BoxCollider>
        <IsTrigger>true</IsTrigger>
        <Material>null</Material>
        <Center>
          <x>0</x>
          <y>0</y>
          <z>0</z>
        </Center>
        <Size>
          <x>1</x>
          <y>1</y>
          <z>1</z>
        </Size>
      </BoxCollider>
    </gameobject>
    

    相关文章

      网友评论

          本文标题:Unity-Xml

          本文链接:https://www.haomeiwen.com/subject/psrzfctx.html