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 () {
}
}