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