XML文件各种操作--源码

来源:互联网 发布:国家数据统计 编辑:程序博客网 时间:2024/05/22 14:41

1:CreateXmlDoc1 ();              // 创建XML文件:方法1

2:CreateXmlDoc2 ();              // 创建XML文件:方法2

3:AddXmlNode();                   // 添加一个XmlNode节点
4: ModifyXmlNodeValue();     //  修改XmlNode节点的值(属性和子结点)
5: ModifyXmlNode ();             // 修改结点(添加结点的属性和添加结点的子结点) 
6: DeleteNodeProp();            // 删除结点中的某一个属性
7: DeleteXmlNode();             //  删除结点

8:ReadXmlText();                //  按照文本文件读取xml


using UnityEngine;using System;using System.Text;using System.IO;using System.Xml;using System.Collections;public class XMLDoc : MonoBehaviour {XmlDocument xmldoc;XmlNode xmlnode;XmlElement xmlelem;string savePath = Directory.GetCurrentDirectory () + "/data.xml";// Use this for initializationvoid Start () {//CreateXmlDoc1 ();       // 1:创建XML文件:方法1//CreateXmlDoc2 ();     // 2:创建XML文件:方法2//AddXmlNode();        // 3:添加一个XmlNode节点//ModifyXmlNodeValue();  // 4: 修改XmlNode节点的值(属性和子结点)//ModifyXmlNode ();  // 5: 修改结点(添加结点的属性和添加结点的子结点) //DeleteNodeProp();  // 6:删除结点中的某一个属性//DeleteXmlNode();   // 7: 删除结点ReadXmlText();    // 8: 按照文本文件读取xmlDebug.Log("Done ! ");  }void ReadXmlText()   // 8:按照文本文件读取xml{StreamReader myFile = new StreamReader(savePath, Encoding.Default);//注意System.Text.Encoding.Defaultstring myString = myFile.ReadToEnd();//myString是读出的字符串Debug.Log(myString);myFile.Close();}void DeleteXmlNode()  // 7: 删除结点{XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(savePath); XmlNode root=xmlDoc.SelectSingleNode("Employees");XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; for(int i=0;i<xnl.Count;i++){XmlElement xe=(XmlElement)xnl.Item(i); if(xe.GetAttribute("ISBN")=="1-1111-1") { root.RemoveChild(xe);if(i<xnl.Count)i=i-1;} }xmlDoc.Save(savePath); }void  DeleteNodeProp()  // 6: 删除结点中的某一个属性{XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(savePath); try{XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; for(int i=0;i<xnl.Count;i++){ //if (xnl.Item(i) == null)//return;XmlElement xe=(XmlElement)xnl.Item(i); xe.RemoveAttribute("genre");//删除genre属性 XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="flag")//如果找到 { xe.RemoveChild(xe2);//则删除} } } }catch(Exception e){Debug.Log (e.Message);}xmlDoc.Save(savePath); }void ModifyXmlNode()  // 5: 修改结点(添加结点的属性和添加结点的子结点) {XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(savePath); XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList) { XmlElement xe=(XmlElement)xn; xe.SetAttribute("test","111111");XmlElement xesub=xmlDoc.CreateElement("flag"); xesub.InnerText="1"; xe.AppendChild(xesub); } xmlDoc.Save(savePath);}void ModifyXmlNodeValue()  // 4: 修改XmlNode节点的值(属性和子结点){XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(savePath); XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList)//遍历所有子节点 { XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 if(xe.GetAttribute("genre")=="张三")//如果genre属性值为“张三” { xe.SetAttribute("genre","update张三");//则修改该属性为“update张三” XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="author")//如果找到 { xe2.InnerText="亚胜";//则修改} } } } xmlDoc.Save(savePath);//保存}void AddXmlNode()         // 3:添加一个XmlNode节点{XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(savePath); XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees> XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点 xe1.SetAttribute("genre","张三");//设置该节点genre属性 xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性 XmlElement xesub1=xmlDoc.CreateElement("title"); xesub1.InnerText="C#入门帮助";//设置文本节点 xe1.AppendChild(xesub1);//添加到<Node>节点中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="高手"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="158.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<Employees>节点中 xmlDoc.Save (savePath);}void CreateXmlDoc2()            // 2:创建XML文件:方法2{XmlTextWriter xmlWriter;string strFilename = savePath;xmlWriter = new XmlTextWriter (strFilename, Encoding.Default); //创建一个xml文档xmlWriter.Formatting = Formatting.Indented;xmlWriter.WriteStartDocument ();xmlWriter.WriteStartElement ("Employees");xmlWriter.WriteStartElement("Node");xmlWriter.WriteAttributeString("genre","DouCube");xmlWriter.WriteAttributeString("ISBN","2-3631-4");xmlWriter.WriteStartElement("title");xmlWriter.WriteString("CS从入门到精通");xmlWriter.WriteEndElement();xmlWriter.WriteStartElement("author");xmlWriter.WriteString("候捷");xmlWriter.WriteEndElement();xmlWriter.WriteStartElement("price");xmlWriter.WriteString("58.3");xmlWriter.WriteEndElement();xmlWriter.WriteEndElement();xmlWriter.Close();}void CreateXmlDoc1()            // 1:创建XML文件:方法1{xmldoc = new XmlDocument ();//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>XmlDeclaration xmldecl;xmldecl = xmldoc.CreateXmlDeclaration ("1.0", "gb2312", null);xmldoc.AppendChild (xmldecl);//加入一个根元素xmlelem = xmldoc.CreateElement("", "Employees", "");xmldoc.AppendChild (xmlelem);//加入另外一个元素for (int i = 1; i < 3; i++) {XmlNode root = xmldoc.SelectSingleNode ("Employees");  //查找<Employees> XmlElement xe1 = xmldoc.CreateElement("Node"); //创建一个<Node>节点 xe1.SetAttribute("genre", "DouCube"); //设置该节点genre属性 xe1.SetAttribute("ISBN", "2-3631-4");  //设置该节点ISBN属性 XmlElement xesub1 = xmldoc.CreateElement ("title");xesub1.InnerText = "CS从入门到精通";//设置文本节点 xe1.AppendChild(xesub1);  //添加到<Node>节点中XmlElement xesub2=xmldoc.CreateElement("author"); xesub2.InnerText="候捷"; xe1.AppendChild(xesub2); XmlElement xesub3=xmldoc.CreateElement("price"); xesub3.InnerText="58.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<Employees>节点中 }xmldoc.Save(savePath);Debug.Log (savePath);Debug.Log ("XML文件创建完成!");}// Update is called once per framevoid Update () {}}


0 0