Unity代码生成XML,CSV文件

生成Xml:

  private void CreateConfigXML()
    {
        string vXmlName = "Test.xml";
        XmlDocument vXmlDoc = new XmlDocument();
        
        // 先生成最外层的root
        XmlElement vXmlEleRoot = vXmlDoc.CreateElement("", "root", "");
        vXmlEleRoot.SetAttribute("platform", "");
        
        // root新增子节点
        XmlNode vXmlNodeRoot = vXmlDoc.AppendChild(vXmlEleRoot);

        XmlElement vXmlEleHeader = vXmlDoc.CreateElement("header");
        vXmlEleHeader.SetAttribute("table", vXmlName);
        vXmlEleHeader.SetAttribute("desc", "测试生成xml");

        // header 头
        XmlElement vXmlEleField = null;

        var vHeaderIndex = 0;
        
        // id
        var vConfig_ID = "id";
        
        //
        var vConfig_ValueInt = "IntValue";
        
        var vConfig_ValueStr = "StringValue";
        
        vXmlEleField = vXmlDoc.CreateElement("field");
        vXmlEleField.SetAttribute("order", $"{vHeaderIndex++}");
        vXmlEleField.SetAttribute("name", vConfig_ID);
        vXmlEleField.SetAttribute("type", "int");
        vXmlEleField.SetAttribute("desc", "id");
        vXmlEleHeader.AppendChild(vXmlEleField);
        
        vXmlEleField = vXmlDoc.CreateElement("field");
        vXmlEleField.SetAttribute("order", $"{vHeaderIndex++}");
        vXmlEleField.SetAttribute("name", vConfig_ValueInt);
        vXmlEleField.SetAttribute("type", "int");
        vXmlEleField.SetAttribute("desc", "int值");
        vXmlEleHeader.AppendChild(vXmlEleField);
        
        vXmlEleField = vXmlDoc.CreateElement("field");
        vXmlEleField.SetAttribute("order", $"{vHeaderIndex++}");
        vXmlEleField.SetAttribute("name", vConfig_ValueStr);
        vXmlEleField.SetAttribute("type", "string");
        vXmlEleField.SetAttribute("desc", "string值");
        vXmlEleHeader.AppendChild(vXmlEleField);

        vXmlNodeRoot.AppendChild(vXmlEleHeader);
        
        var vIndex = 1;

        for (int i = 0; i < 10; i++)
        {
            var vXmlEleItem = vXmlDoc.CreateElement("item");
            vXmlEleItem.SetAttribute(vConfig_ID, $"{i}");
            vXmlEleItem.SetAttribute(vConfig_ValueInt, $"{i * 10}");
            vXmlEleItem.SetAttribute(vConfig_ValueStr, $"{i * 10},{i * 100}");
            vXmlNodeRoot.AppendChild(vXmlEleItem);
        }

        var vPath = Application.dataPath + $"/{vXmlName}";
        vXmlDoc.Save(vPath);
        
        // 打开文件夹
        UnityEditor.EditorUtility.RevealInFinder(vPath);
    }

 

  生成后的xml:

 

 

 

生成CSV文件:

private void CreateCSV()
    {
        var vFileName = Application.dataPath + "/Test.csv";
        FileStream vFileStream = new FileStream(vFileName, FileMode.OpenOrCreate, FileAccess.Write);
        using (StreamWriter vStreamWriter = new StreamWriter(vFileStream, Encoding.UTF8))
        {
            StringBuilder vStringBuilder = new StringBuilder();
            vStringBuilder.Append("ID,");
            vStringBuilder.Append("X,");
            vStringBuilder.Append("Y,");
            vStringBuilder.AppendLine("");

            for (var i = 0; i < 10; i++)
            {
                vStringBuilder.Append($"{i},");
                vStringBuilder.Append($"{i + 10},");
                vStringBuilder.Append($"\"{i},{i * 10},{i * 100}\"");
                vStringBuilder.AppendLine("");
            }
            
            
            vStreamWriter.Write(vStringBuilder);
            vStreamWriter.Flush();
            vStreamWriter.Close();
        }
        
        // 打开文件夹
        UnityEditor.EditorUtility.RevealInFinder(vFileName);
    }

 

生成后的内容:

 

posted @ 2022-03-14 17:46  色色先生  阅读(379)  评论(0编辑  收藏  举报