读取五种格式的配置文件(xml(两种方式),txt,excel,csv,json)

using Mono.Xml;
using System.Security;
using LitJson;
using System.Collections.Generic;
using System.IO;
using Excel;
using System.Data;

//六种读取文件的方式
public class ReadInfo : MonoBehaviour {

// Use this for initialization
void Start ()
{
    //读取TXT文件
    //ReadTXT();
    //用system.xml读取xml文件
    //ReadXML();
    //用mono.xml读取xml文件
    //ReadXML1();
    //读取json文件
    //ReadJson();
    //读取CSV文件
    //ReadCSV();
    //读取excel文件
    ReadExcel();
}

//读取excel文件
private static void ReadExcel()
{
    //路径拼接找到excel文件的路径
    string path = Application.dataPath + @"\Excel\Test.xlsx";
    Debug.Log(path);
    //以字节流的形式加载读取
    FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
    //转型为IExcelDataReader类型
    IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
    //转化为DataSet格式
    DataSet result = reader.AsDataSet();

    //获取列数和行数
    int columns = result.Tables[0].Columns.Count;
    int rows = result.Tables[0].Rows.Count;
    //遍历每一行
    for(int i = 1; i < rows; i ++)
    {      
        Enemy enemy = new Enemy();
        //读取第一张表的第i行的第几个配置信息
        enemy.name = result.Tables[0].Rows[i][0].ToString();
        enemy.hp = int.Parse(result.Tables[0].Rows[i][1].ToString());
        enemy.attackPoint = int.Parse( result.Tables[0].Rows[i][2].ToString());
        enemy.ToString();
    }
}

//读取CSV文件
private static void ReadCSV()
{
    List<Enemy> list = new List<Enemy>();
    //加载csv文件
    TextAsset csv = Resources.Load("CSV/Test") as TextAsset;
    //文件切割为每一行
    string[] lines = csv.text.Split('\n');
    Debug.Log(lines.Length);
    //遍历每一行的数据 每一行的数据是以逗号隔开的
    for (int i = 1; i < lines.Length; i++)
    {
        string[] temp = lines[i].Split(',');
        Debug.Log(temp.Length);
        Enemy enemy = new Enemy();
        enemy.name = temp[0];
        enemy.hp = double.Parse(temp[1]);
        enemy.attackPoint = double.Parse(temp[2]);
        enemy.ToString();
        list.Add(enemy);
    }
}

//读取Json文件
private static void ReadJson()
{
    //Debug.Log( data["family_list"][1]["name"]);
    List<Famliy> list = new List<Famliy>();
    //加载json文件
    TextAsset json = Resources.Load("JSON/Test") as TextAsset;
    //转化为JsonData类型的数据
    JsonData data = JsonMapper.ToObject(json.text);
    //进行遍历 family_list相当对根节点
    for (int i = 0; i < data["family_list"].Count; i++)
    {
        Famliy temp = new Famliy();
        //根节点下的第几组数据 中的哪一个属性
        temp.name = data["family_list"][i]["name"].ToString();
        temp.age = int.Parse(data["family_list"][i]["age"].ToString());
        temp.tellphone = data["family_list"][i]["tellphone"].ToString();
        temp.address = data["family_list"][i]["address"].ToString();
        temp.ToString();
        list.Add(temp);
    }
}

//mono.xml读取xml文件
private static void ReadXML1()
{
    //加载xml文件
    TextAsset xml = Resources.Load("XML/Test") as TextAsset;
    //创建一个安全的语法剖析程式
    SecurityParser sp = new SecurityParser();
    //读取xml信息
    sp.LoadXml(xml.text);
    //转化为安全元素类型
    SecurityElement se = sp.ToXml();
    //遍历这个根元素里的子元素
    foreach (SecurityElement child in se.Children)
    {
        //如果子元素的标签为enemy,获取子元素的属性
        if (child.Tag == "Enemy")
        {
            Debug.Log(child.Attribute("name"));
        }
        //嵌套的元素
        if (child.Tag == "root1")
        {
            //遍历该元素下的所有元素
            foreach (SecurityElement child1 in child.Children)
            {
                Debug.Log(child1.Attribute("name"));
            }
        }
    }
}

//system.xml读取xml文件
private static void ReadXML()
{
    //加载xml文件
    TextAsset xml = Resources.Load("XML/Test") as TextAsset;
    //声明一个XmlDocument的对象 
    XmlDocument document = new XmlDocument();
    //xml的文件信息加载到上一步声明的对象中
    document.LoadXml(xml.text);
    //找到root的根节点
    XmlNode root = document.SelectSingleNode("root");
    //获取此节点下的所有节点
    XmlNodeList nodeList = root.ChildNodes;
    //遍历所有节点
    foreach (XmlNode node in nodeList)
    {
        //节点的嵌套
        if (node.Name == "root1")
        {
            foreach (XmlNode node1 in node.ChildNodes)
            {
                Debug.Log(node1.Name);
                //将节点转化为xml元素 进行属性的获取
                XmlElement element1 = node1 as XmlElement;
                Debug.Log(element1.GetAttribute("name"));
            }
            continue;
        }
        Debug.Log(node.Name);
        XmlElement element = node as XmlElement;
        Debug.Log(element.GetAttribute("name"));
    }
}


//读取txt文件
private static void ReadTXT()
{
    //加载txt文件
    TextAsset txt = Resources.Load("TXT/Test") as TextAsset;
    //Debug.Log(txt.text);
    //字符串的切割 获取信息
    string[] str = txt.text.Split('\n');
    for (int i = 0; i < str.Length; i++)
    {
        Debug.Log("字符数组的长度: " + str.Length);
        Debug.Log(str[i]);
    }
}

}

public class Famliy
{
public string name;
public int age;
public string tellphone;
public string address;

public new void ToString()
{
    Debug.Log(name + age + tellphone + address);
}

}

public class Enemy
{
public string name;
public double hp;
public double attackPoint;

public new void ToString()
{
    Debug.Log(name + hp + attackPoint );
}

}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值