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