在C#中使用XML将Grid 2d数组写入文件

时间:2019-04-30 16:21:16

标签: c# xml grid monogame

我有一个巨大的二维数组,看起来像

Map grid = new int[,] { {1,1,1,1,1,1},{0,0,0,0,0,0},{2,2,2,2,2,2}}; 

我用它来描述一个单人游戏项目的网格。 我正在为自己开发的游戏创建关卡编辑器, 关卡编辑器需要将使用关卡编辑器后将创建的新网格写入外部文件。 建议我使用XML将网格写入外部文件。 以后,我将不得不读取文件并将数据发送到新 地图网格构造函数。

我是XML的新手,还没有找到正确编写XML的好方法。 我正在使用Visual Studio Community 2017,C#。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication110
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            int[,] grid = new int[,] { { 1, 1, 1, 1, 1, 1 }, { 0, 0, 0, 0, 0, 0 }, { 2, 2, 2, 2, 2, 2 } };

            string xml = "<Data></Data>";

            XDocument doc = XDocument.Parse(xml);
            XElement data = doc.Root;

            for (int row = 0; row <= grid.GetUpperBound(0); row++)
            {
                XElement xRow = new XElement("Row");
                data.Add(xRow);
                for (int col = 0; col <= grid.GetUpperBound(1); col++)
                {
                    XElement xCol = new XElement("Column", grid[row, col]);
                    xRow.Add(xCol);
                }
            }
            data.Add(new XElement("music", new object[] {
                new XElement("GEVAs_main_sountrack"),
                new XElement("RonWalking")            
            }));
            doc.Save(FILENAME);

            XDocument newDoc = XDocument.Load(FILENAME);

            int[][] newGrid = newDoc.Descendants("Row").Select(x => x.Elements("Column").Select(y => (int)y).ToArray()).ToArray();
        }
    }
}