XML的使用(借鉴大神,仅作为笔记用)

1.引用命名空间

using System.Xml;

using System.IO;

2.生成Xml

public void createXml()

{

 

               //xml保存的路径,这里放在Assets路径 注意路径。

 

string filepath = Application.dataPath + @"/my.xml";

 

               //继续判断当前路径下是否有该文件

 

if(!File.Exists (filepath))

 

{

 

                         //创建XML文档实例

 

XmlDocument xmlDoc = new XmlDocument();

 

                         //创建root节点,也就是最上一层节点

 

XmlElement root = xmlDoc.CreateElement("transforms");

 

                          //继续创建下一层节点

 

XmlElement elmNew = xmlDoc.CreateElement("rotation");

 

                        //设置节点的两个属性 ID 和 NAME

 

     elmNew.SetAttribute("id","0");

 

     elmNew.SetAttribute("name","momo");

 

       //继续创建下一层节点

 

              XmlElement rotation_X = xmlDoc.CreateElement("x");

 

                     //设置节点中的数值

 

                     rotation_X.InnerText = "0";

 

                    XmlElement rotation_Y = xmlDoc.CreateElement("y");

 

                    rotation_Y.InnerText = "1";

 

                    XmlElement rotation_Z = xmlDoc.CreateElement("z");

 

                     rotation_Z.InnerText = "2";

 

                    //这里在添加一个节点属性,用来区分。。

 

      rotation_Z.SetAttribute("id","1");

 

 

 

             //把节点一层一层的添加至XMLDoc中 ,请仔细看它们之间的先后顺序,这将是生成XML文件的顺序

 

             elmNew.AppendChild(rotation_X);

 

             elmNew.AppendChild(rotation_Y);

 

             elmNew.AppendChild(rotation_Z);

 

     root.AppendChild(elmNew);

 

             xmlDoc.AppendChild(root);

 

             //把XML文件保存至本地

 

             xmlDoc.Save(filepath);

 

Debug.Log("createXml OK!");

 

}

 

}
2.

更新XML文件

以其中某个节点名称做条件,当查询到时更新该节点

public void UpdateXml()

{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
                         //根据路径将XML读取出来
xmlDoc.Load(filepath);
                         //得到transforms下的所有子节点
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
                         //遍历所有子节点
foreach(XmlElement xe in nodeList)
{
                                //拿到节点中属性ID =0的节点
if(xe.GetAttribute("id")=="0")
{
                                        //更新节点属性
xe.SetAttribute("id","1000");
                                        //继续遍历
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name=="z")
{
                                                        //这里是修改节点名称对应的数值,而上面的拿到节点连带的属性。。。
x1.InnerText="update00000";
}
 
}
break;
}
}
xmlDoc.Save(filepath);
Debug.Log("UpdateXml OK!");
}
 
}
3.添加XML
 
public void AddXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode root = xmlDoc.SelectSingleNode("transforms");
XmlElement elmNew = xmlDoc.CreateElement("rotation");
elmNew.SetAttribute("id","1");
    elmNew.SetAttribute("name","yusong");
 
         XmlElement rotation_X = xmlDoc.CreateElement("x");
             rotation_X.InnerText = "0";
rotation_X.SetAttribute("id","1");
             XmlElement rotation_Y = xmlDoc.CreateElement("y");
             rotation_Y.InnerText = "1";
             XmlElement rotation_Z = xmlDoc.CreateElement("z");
             rotation_Z.InnerText = "2";
 
             elmNew.AppendChild(rotation_X);
             elmNew.AppendChild(rotation_Y);
             elmNew.AppendChild(rotation_Z);
root.AppendChild(elmNew);
             xmlDoc.AppendChild(root);
             xmlDoc.Save(filepath);
Debug.Log("AddXml OK!");
}
}
4.删除XML
 
public void deleteXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
foreach(XmlElement xe in nodeList)
{
if(xe.GetAttribute("id")=="1")
{
xe.RemoveAttribute("id");
}
 
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name == "z")
{
x1.RemoveAll();
 
}
}
}
xmlDoc.Save(filepath);
Debug.Log("deleteXml OK!");
}
 
}
4.解析与输出上面的XML
public void showXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
//遍历每一个节点,拿节点的属性以及节点的内容
foreach(XmlElement xe in nodeList)
{
Debug.Log("Attribute :" + xe.GetAttribute("name"));
Debug.Log("NAME :" + xe.Name);
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name == "y")
{
Debug.Log("VALUE :" + x1.InnerText);
 
}
}
}
Debug.Log("all = " + xmlDoc.OuterXml);
 
}
}

 

 

转载于:https://www.cnblogs.com/Damon-3707/p/11431479.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值