您的位置:首页 > 移动开发 > Unity3D

unity读写XML的相关操作

2017-06-19 10:21 253 查看
读写主要用到了


XmlDocument 类


XmlDocument.GetElementsByTagName 方法 (String)

返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。

using System;
using System.Xml;
using UnityEngine;
class CarXMLConfigure
{
public const string Root="Root";
public const string NetworkConfigure="NetworkConfigure";
public const string IP="IP";
public const string FileName="config.xml";
public const string StreamingAssets="/StreamingAssets/";
public const string NM = "nm";

}

class XMLManagement
{
private XmlDocument doc;
private XmlElement root;
private string fileName;

public XMLManagement()
{
doc=new XmlDocument();
}

//首先加载
public bool LoadFile(string filePath)
{
fileName=filePath;

doc.Load(filePath);
if(doc.InnerXml!="")
{
root=doc.DocumentElement;
return true;
}
else
return false;
}

public void CreateXMLFile(string filePath) //name should contain .xml,for example "config.xml"
{
fileName = filePath;
XmlDeclaration xmldecl;
xmldecl = doc.CreateXmlDeclaration("1.0","gb2312",null);
doc.AppendChild (xmldecl);

root=doc.CreateElement(CarXMLConfigure.Root);
doc.AppendChild(root);
}
//添加节点
public void setAttribute(string attriName,string attriValue)
{
XmlElement child=doc.CreateElement(CarXMLConfigure.NetworkConfigure);
child.SetAttribute(attriName,attriValue);
if(root==null)
{
Console.WriteLine("the root is null,please create it or get it from an exist xml file!");
return;
}
root.AppendChild(child);
save();//添加节点的时候 需要保存

}

public void save()
{
doc.Save(fileName);
}
//  获取节点,
public string getIP()
{
//
XmlNodeList list = root.GetElementsByTagName(CarXMLConfigure.NetworkConfigure); //root.SelectNodes(CarXMLConfigure.NetworkConfigure);//

string text="";
foreach(XmlNode node in list)
{

XmlElement xmlnode = (XmlElement)node;
Debug.Log(node.Value + node.InnerXml + " ==  " + xmlnode.Name+" == "+xmlnode.Value +" === "+node.LocalName);
text = xmlnode.GetAttribute("IP11");//  如果跟节点相同。只能获取到第二个。。。
}
Debug.Log(list.Count+" "+text);
return text;
}
public string getAaaryIP(int  a)
{
XmlNodeList list = root.GetElementsByTagName(CarXMLConfigure.NetworkConfigure + a.ToString());

string text = "";
foreach (XmlNode node in list)
{
text = ((XmlElement)node).GetAttribute(CarXMLConfigure.IP+a.ToString());
}
//Debug.Log(text + "  " + CarXMLConfigure.IP + a.ToString());
return text;

}
public string getMus() {
XmlNodeList list = root.GetElementsByTagName("MusConfig");
string text = "";
foreach (XmlNode node in list) {
text = ((XmlElement)node).GetAttribute("Mus");
}

return text;
}
public string getNum() {
XmlNodeList list = root.GetElementsByTagName("OthConfig");
string text = "";
foreach (XmlNode node in list)
{
text = ((XmlElement)node).GetAttribute(CarXMLConfigure.NM);
}
return text;

}
public string getN()
{
XmlNodeList list = root.GetElementsByTagName("NetConfig");
string text = "";
foreach (XmlNode node in list)
{
text = ((XmlElement)node).GetAttribute("m");
}
return text;

}
public string getNam() {

XmlNodeList list = root.GetElementsByTagName("NamConfig");
string text = "";
foreach (XmlNode node in list) {

text = ((XmlElement)node).GetAttribute("nam");
}
return text;

}
public string GetIP(string s) {
XmlNodeList list = root.GetElementsByTagName(s);
string text = "";
foreach (XmlNode node in list) {
text = ((XmlElement)node).GetAttribute(s);
}
return text;
}

public string GetIp_Name(int a)
{
XmlNodeList list = root.GetElementsByTagName(CarXMLConfigure.NetworkConfigure + a.ToString());

string text = "";
foreach (XmlNode node in list)
{
text = ((XmlElement)node).GetAttribute(CarXMLConfigure.IP + a.ToString());
text = text + "|" + ((XmlElement)node).GetAttribute("name"+a.ToString());
text = text + "|" + ((XmlElement)node).GetAttribute("num"+a.ToString());
}
//Debug.Log(text + "  " + CarXMLConfigure.IP + a.ToString());
return text;

}
}


然后在其他地方调用就也可以了

using UnityEngine;
using System.Collections;

public class ReadXML : MonoBehaviour {
XMLManagement manager;
// Use this for initialization
void Start () {
manager = new XMLManagement();
manager.LoadFile(Application.dataPath+CarXMLConfigure.StreamingAssets+CarXMLConfigure.FileName);
string str = manager.getAaaryIP(1); //manager.getIP();
string str1 = manager.getIP();
manager.setAttribute("A","B");// 添加
Debug.Log(str +"  ===  "+str1);
}

// Update is called once per frame
void Update () {

}
}




///  面向对象的三大特征:封装,继承, 多态
父类指针指向子类对象,然后调用父类方法

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: