XML文件各种操作--源码

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 initialization
	void Start () {
//		CreateXmlDoc1 ();       // 1:创建XML文件:方法1
//		CreateXmlDoc2 ();     // 2:创建XML文件:方法2
//		AddXmlNode();        // 3:添加一个XmlNode节点
//		ModifyXmlNodeValue();  // 4: 修改XmlNode节点的值(属性和子结点)
//		ModifyXmlNode ();  // 5: 修改结点(添加结点的属性和添加结点的子结点) 
//		DeleteNodeProp();  // 6:删除结点中的某一个属性
//		DeleteXmlNode();   // 7: 删除结点
		ReadXmlText();    // 8: 按照文本文件读取xml
		Debug.Log("Done ! ");  
	}

	void ReadXmlText()   // 8:按照文本文件读取xml
	{
		StreamReader myFile = new StreamReader(savePath, Encoding.Default);
		//注意System.Text.Encoding.Default

		string 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 frame
	void Update () {
	
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值