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); }
生成后的内容: