Xml文件操作(創建、讀取、寫入、修改)
2022/9/11??????點擊:
創建Xml文件
創建Xml需要注意層級,層有層的添加到xml中:
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { CreateXML(); } //創建XML void CreateXML() { string path = Application.streamingAssetsPath + "/data.xml"; //創建xml文檔 XmlDocument xml = new XmlDocument(); //創建根節點 XmlElement root = xml.CreateElement("Node"); //創建根節點的子節點 XmlElement element = xml.CreateElement("Person"); //設置根節點的子節點的屬性 element.SetAttribute("id", "1"); //添加兩個子節點到根節點的子節點的下面 XmlElement elementChild1 = xml.CreateElement("Name"); elementChild1.SetAttribute("name", ""); elementChild1.InnerText = "王五"; XmlElement elementChild2 = xml.CreateElement("Age"); elementChild2.SetAttribute("age", ""); elementChild2.InnerText = "18"; //把節點層層的添加至xml中,注意他們之間的先后順序,這是生成XML文件的順序 element.AppendChild(elementChild1); element.AppendChild(elementChild2); //再創建個根節點的子節點 XmlElement element2 = xml.CreateElement("Person"); //設置根節點的子節點的屬性 名字樣 屬性不樣也可以 element2.SetAttribute("id", "2"); //添加兩個子節點到根節點的子節點的下面 XmlElement elementChild3 = xml.CreateElement("Name"); elementChild3.SetAttribute("name", ""); elementChild3.InnerText = "李四"; XmlElement elementChild4 = xml.CreateElement("Age"); elementChild4.SetAttribute("age", ""); elementChild4.InnerText = "22"; element2.AppendChild(elementChild3); element2.AppendChild(elementChild4); //把節點層層的添加至xml中,注意他們之間的先后順序,這是生成XML文件的順序 root.AppendChild(element); root.AppendChild(element2); xml.AppendChild(root); //*后保存文件 xml.Save(path); } }
讀取Xml文件
讀取Xml,需要從根節點層層往下找,根節點找子節點,子節點找孫節點。
我們就先以查找屬性的方式找到我們需要的節點數據:
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { LoadXml(); } //讀取XML void LoadXml() { XmlDocument xml = new XmlDocument(); xml.Load(Application.streamingAssetsPath + "/data.xml"); XmlNodeList xmlNodeList = xml.SelectSingleNode("Node").ChildNodes; //遍歷所有子節點 foreach (XmlElement xl1 in xmlNodeList) { if (xl1.GetAttribute("id") == "1") { //繼續遍歷id為1的節點下的子節點 foreach (XmlElement xl2 in xl1.ChildNodes) { if (xl2.GetAttribute("name") == "") { Debug.Log(xl2.InnerText); } else if (xl2.GetAttribute("age") == "") { Debug.Log(xl2.InnerText); } } } } } }根據節點的名字進行查找:
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { ReadXml(); } //讀取XML void ReadXml() { XmlDocument xml = new XmlDocument(); xml.Load(Application.streamingAssetsPath + "/data.xml"); XmlNodeList xmlNodeList = xml.SelectSingleNode("Node").ChildNodes; //遍歷所有子節點 foreach (XmlElement xl1 in xmlNodeList) { if (xl1.Name == "Person" && xl1.GetAttribute("id") == "1") { //繼續遍歷名字叫做Person,id為1的節點下的子節點 foreach (XmlElement xl2 in xl1.ChildNodes) { if (xl2.Name == "Name") { Debug.Log(xl2.InnerText); } else if (xl2.Name == "Age") { Debug.Log(xl2.InnerText); } } } } } }不知道名字屬性怎么辦
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { ReadXml(); } //讀取XML void ReadXml() { XmlDocument xml = new XmlDocument(); xml.Load(Application.streamingAssetsPath + "/data.xml"); //獲取根節點 XmlNode rootNode = xml.FirstChild; XmlNodeList nodeList = rootNode.ChildNodes; //遍歷所有子節點 int Count = nodeList.Count; for (int i = 0; i < Count; i++) { Debug.Log(nodeList.Item(i).InnerText); } } }
修改Xml文件
修改Xml文件的數據,就需要根據節點的名字或者節點的屬性找到對應的節點修改數據,之后保存文件即可:
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { UpdateXML(); } //修改XML void UpdateXML() { string path = Application.streamingAssetsPath + "/data.xml"; if (File.Exists(path)) { XmlDocument xml = new XmlDocument(); xml.Load(path); XmlNodeList xmlNodeList = xml.SelectSingleNode("Node").ChildNodes; foreach (XmlElement xl1 in xmlNodeList) { if (xl1.GetAttribute("id") == "1") { //把id為1的屬性改為5 xl1.SetAttribute("id", "5"); } if (xl1.GetAttribute("id") == "2") { foreach (XmlElement xl2 in xl1.ChildNodes) { if (xl2.Name == "Name") { //修改其里面的內容 xl2.SetAttribute("name", "abc"); xl2.InnerText = "趙六"; } } } } xml.Save(path); } } }
添加數據
using System.IO; using System.Xml; using UnityEngine; public class Demo5 : MonoBehaviour { void Start() { AddXMLData(); } //添加XML void AddXMLData() { string path = Application.streamingAssetsPath + "/data.xml"; if (File.Exists(path)) { XmlDocument xml = new XmlDocument(); xml.Load(path); XmlNode root = xml.SelectSingleNode("Node"); XmlElement element = xml.CreateElement("Person"); //設置節點的屬性 element.SetAttribute("id", "2"); XmlElement elementChild1 = xml.CreateElement("Name"); elementChild1.SetAttribute("name", "ced"); elementChild1.InnerText = "李四"; XmlElement elementChild2 = xml.CreateElement("Age"); elementChild2.SetAttribute("age", "123"); elementChild2.InnerText = "11"; //把節點層層的添加至xml中,注意他們之間的先后順序,這是生成XML文件的順序 element.AppendChild(elementChild1); element.AppendChild(elementChild2); root.AppendChild(element); xml.AppendChild(root); //*后保存文件 xml.Save(path); } } }
添加數據使用AppendChild()函數進行添加。
本文來自網絡,版權歸原作者所有。
- 上一篇:Excel文件操作(創建、讀取、寫入、修改) 2022/9/11
- 下一篇:Json文件操作(創建、讀取、解析、修改) 2022/9/11