unity xml的读取和写入和创建

unity xml的读取和写入

Xml是一种常用的数据格式,方便数据的索引查找

1.首先引入相关的动态链接库:

1.1System.Data.dll

1.2Excel.DLL

1.3文件应用抬头

using UnityEngine;
using System.Collections;
using System.IO;
using System.Xml;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using Excel;

2.根据excel生成对应的xml(写xml)

2.1:excel转为常用的dataset格式

/// <summary>
    /// 根据Excel的path生成对应的dataset
    /// </summary>
    /// <param name="path"></Excel地址:常为Application.dataPath+ "/StreamingAssets/" + "Excel文件名.xlsx">
    /// <returns></returns>
    public DataSet getDataset(string path)
    {
        FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read);
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fs);
        DataSet ds = excelReader.AsDataSet();
        fs.Dispose();
        return ds;
    }

2.2:根据2.1生成的dataset中的table参考自定义方式生成对应的xml

  /// <summary>
  /// 将dataset数据根据字符串索引进行xml序列化
  /// </summary>
  /// <param name="xmlname"></生成的xml名字>
  /// <param name="DT"></dataset的table>
  /// <param name="strAtt"></父节点序列>
  /// <param name="strelement"></子节点序列>

  public   void Toxml(string xmlname,DataTable DT,string strAtt,string[] strelement)
    {
        if (DT != null)
        {
            if (DT.Rows.Count > 0) {
                if (!Directory.Exists(Application.streamingAssetsPath))
                {
                    Directory.CreateDirectory(Application.streamingAssetsPath);
                }
                string path = Application.streamingAssetsPath + "/" + xmlname + ".xml";
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
                XmlDocument writer = new XmlDocument();
                XmlElement x100 = writer.CreateElement(strAtt);
                for (int i = 0; i < DT.Rows.Count; i++) {
                    XmlElement x10 = writer.CreateElement(strelement[0]);
                    for (int j = 0; j < strelement.Length-1; j++) {
                        XmlAttribute xa = writer.CreateAttribute(strelement[j]);
                        xa.Value = DT.Rows[i][j].ToString();
                        x10.Attributes.Append(xa);

                    }
                    x100.AppendChild(x10);
                }
                writer.AppendChild(x100);
                writer.Save(path);
            }
        }
    }

3.常见获取xml中的数据(读xml)

  public string GetTextNameByGameObjectName(string TargetParentName,string gameobjName)
    {
        testname = null;

        XmlNodeList xmlNodeList = doc.SelectSingleNode("test").ChildNodes;

        foreach (XmlElement tempnode in xmlNodeList)
        {
            if (TargetParentName == tempnode.GetAttribute("parentTargetname") && gameobjName == tempnode.GetAttribute("scenesname"))
            {
                testname = tempnode.GetAttribute("textname");

            }
            else
            {
              //  Debug.LogError("table didnt have the Attribute");
            }
            }
        return testname;
    }

5.写入xml

  public void WriteToxml(string NodeAttritube,string InnerTex)
    {
        _XmlPath = Application.dataPath + "/StreamingAssets/" + "che.xml";
        LoadXmlFileByPath(_XmlPath);
        XmlNodeList xmlNodeList = doc.SelectSingleNode("合成工具列表").ChildNodes;
        foreach (XmlElement tempNode in xmlNodeList)
        {

            if (NodeAttritube == tempNode.GetAttribute("Tool4ID"))
            {

                tempNode.SetAttribute("Tool4ID", InnerTex);
            }

        }
        doc.Save(_XmlPath);

    }

4.增加编辑器功能,方便策划改表后自行生成xml

在类中增加方法
public void CreatXml()
    {
        _Excelpath= Application.dataPath + "/StreamingAssets/" + "ExplosionList.xlsx";
        _XmlPath = Application.dataPath + "/StreamingAssets/" + "che.xml";
         ds =  getDataset(_Excelpath);
         Toxml("che", ds.Tables[0], "合成工具列表", newstress0);

    }

在另外的编辑器类写入
public class CompositeXmlMake : Editor {
    [MenuItem("Tools/CreatCompositeXml")]

    public static void CreatXML()
    {
        ConpositeXml.GetInstance().CreatXml();
    }
时间: 2024-11-08 12:19:38

unity xml的读取和写入和创建的相关文章

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

C#读取并写入XML文件

XML(可扩展标记语言)文件,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML与HTML的设计区别是:XML 被设计为传输和存储数据,其焦点是数据的内容.而HTML 被设计用来显示数据,其焦点是数据的外观.HTML 旨在显示信息,而 XML 旨在传输信息. XML和HTML语法区别:HTML的标记不是所有的都需要成对出现,XML则要求所有的标记必须成对出现:HTML标记不区分大小写,XML则大小敏感,即区分大小写. 在Asp.Net中我们需要通过C#来对已

C#中创建、打开、读取、写入、保存Excel的一般性代码

1 Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象.(1) Application对象.Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境. (2) Workbook对象.Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件.(3) Worksheet对象.Worksheet对象包含于Workb

C#读取和写入XML文件

关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义,您需要自行定义标签 XML 被设计为具有自我描述性 XML 是W3C 的推荐标准 二.XML语法: 1.一个XML包含以下几部分内容: 文档声明,元素,属性,注释,CDATA(特

php操作XML,读取数据和写入数据的方法

xml文件 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>开心的路飞</username> <sex>男</sex> <face>face/43.jpg</face> <email>[email protected]</email> &l

文件的创建,读取,写入,修改,删除---python入门

转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行: #python >>>f=open('f.txt','w') # r只读,w可写,a追加 >>>for i in range(0,10):f.write(str(i)+'\n') . . . >>> f.close() 二.文件内容追加

【C#】读取和写入本地txt文件

本次我们要使用C#的方式进行txt文件的读取和写入,在Unity的开发过程中同样适用,下面来具体实现吧. 创建文件的打开.关闭.读取.写入类:MyFileStream 要引入System.IO和System.Runtime.Serialization.Formatters.Binary和,一个是文件读取的IO类和另一个是二进制类,具体代码如下: using UnityEngine; using System.Collections; using System.Runtime.Serializat

iOS学习 plist读取和写入文件

干iOS开发时间,后经常用来plist文件.  那plist什么文件是它? 它的全称是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist .因此通常被称为 plist文件.文件是xml格式的. Plist文件通经常使用于储存用户设置.也能够用于存储捆绑的信息 我们创建一个项目来学习plist文件的读写. 1.创建项目Plistdemo 项目创建之后能够找到项目相应的plist文件.打开例如以下图所看到的: 在编辑器中显示相似与表格

利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入XML * @param obj 泛型对象 * @param entityPropertys 泛型对象的List集合 * @param Encode XML自定义编码类型(推荐使用GBK) * @param XMLPathAndName XML文件的路径及文件名 */ public void wri