Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
5 / 5 / 0
Регистрация: 19.02.2013
Сообщений: 55

XML и трехмерный массив

10.05.2013, 21:19. Показов 2432. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите как записать трехмерный массив в XML файл? Затем нужно проделать обратное - прочитать XML и воссоздать трехмерный массив. Найти что либо адекватного в сети не удалось даже по записи двумерного массива.

Объявление массива:

C#
1
int[,,] model = new int [10,5,5];
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2013, 21:19
Ответы с готовыми решениями:

Трехмерный массив в Dictinary<.>
Хочу преборазовать массив 26*26*26 в dicrtinary. Только с указателем проблема. Допустим, получить указатель для dictinary key я могу...

Трехмерный динамический массив
Доброго времени суток, существует задача создания динамического трехмерного массива. Как это возможно реализовать, если приложите пример,...

Трехмерный массив неопределенной длины
Можно задать двумерный массив с отложенной инициализацией: private double _CorrelationArray = new double; И даже такое выражение не...

6
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
11.05.2013, 00:34
Как говаривал Йода учитель: На покило грибочков дело сие...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Xml.Linq;
 
namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int[, ,] array = new int[5, 5, 10];
            for (int x = 0; x < 5; x++)
                for (int y = 0; y < 5; y++)
                    for (int z = 0; z < 10; z++)
                        array[x, y, z] = rnd.Next(-100, 100);
 
 
            string nameFile = "brainfuck.xml";
 
            XDocument doc = new XDocument(new XElement("RootTag"));
 
            for (int x = 0; x < 5; x++)
                for (int y = 0; y < 5; y++)
                    for (int z = 0; z < 10; z++)
                        doc.Root.Add(new XElement("node",
                            new XAttribute("x", x),
                            new XAttribute("y", y),
                            new XAttribute("z", z),
                            new XElement("value", array[x, y, z])));
 
            doc.Save(nameFile);
 
            doc = XDocument.Load(nameFile);
            int[, ,] resultArray = new int[5, 5, 10];
 
            foreach (var item in doc.Root.Elements())
            {
                int x = int.Parse(item.Attribute("x").Value);
                int y = int.Parse(item.Attribute("y").Value);
                int z = int.Parse(item.Attribute("z").Value);
                int value = int.Parse(item.Element("value").Value);
                resultArray[x, y, z] = value;
            }
 
            Console.WriteLine("Complete");
            Console.ReadKey(true);
        }
    }
}
2
5 / 5 / 0
Регистрация: 19.02.2013
Сообщений: 55
11.05.2013, 10:54  [ТС]
freeba, спасибо большое. Все работает как надо, только хотелось бы большей наглядности в XML файле. Например так:

XML
1
2
3
4
5
6
7
<node x="0">
    <line y="0">62 -49 75 0 11 43 -17 -94 50 82</line>
    <line y="1">-30 74 93 -59 -94 17 71 -50 -87 22</line>
    <line y="2">-90 -27 10 -56 -82 -64 -80 -36 -62 -82</line>
    <line y="3">38 46 -82 7 -25 28 21 -35 63 9</line>
    <line y="4">82 34 76 3 -28 -73 -15 -82 62 -39</line>
</node>
Такую структуру возможно реализовать?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
11.05.2013, 11:45
Цитата Сообщение от Hrommi Посмотреть сообщение
Такую структуру возможно реализовать?
Можно, но это усложнит и запись и чтение. Вот пример как ее записать, чтение уже лень делать, оно ничуть не проще.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Xml.Linq;
 
namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int[, ,] array = new int[5, 5, 10];
            for (int x = 0; x < 5; x++)
                for (int y = 0; y < 5; y++)
                    for (int z = 0; z < 10; z++)
                        array[x, y, z] = rnd.Next(-100, 100);
 
 
            string nameFile = "brainfuck2.xml";
 
            XDocument doc = new XDocument(new XElement("RootTag"));
 
            for (int x = 0; x < 5; x++)
            {
                XElement nodeElement = new XElement("node", new XAttribute("x", x));
                doc.Root.Add(nodeElement);
 
                for (int y = 0; y < 5; y++)
                {
                    string zLine = "";
                    for (int z = 0; z < 10; z++)
                        zLine += array[x, y, z] + " ";
 
                    XElement lineElement = new XElement("list", new XAttribute("y", y));
                    nodeElement.Add(lineElement);
                    lineElement.Add(zLine.Trim());
                }
            }
 
            doc.Save(nameFile);
 
 
 
            Console.WriteLine("Complete");
            Console.ReadKey(true);
        }
    }
}
1
5 / 5 / 0
Регистрация: 19.02.2013
Сообщений: 55
11.05.2013, 12:04  [ТС]
freeba, еще раз спасибо за помощь!
0
5 / 5 / 0
Регистрация: 19.02.2013
Сообщений: 55
16.06.2013, 16:50  [ТС]
freeba, чтобы не создавать новую тему спрошу здесь. Как в первый предложенный Вами вариант добавить перед массивом запись о его размерности? Чтобы при чтении инициализировать массив по этим данным.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
16.06.2013, 17:34
В создании корневого элемента добавте атрибуты.
C#
1
2
3
4
XDocument doc = new XDocument(new XElement("RootTag", 
new XAttribute("SizeX", x),
                            new XAttribute("SizeY", y),
                            new XAttribute("SizeZ", z),));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2013, 17:34
Помогаю со студенческими работами здесь

Как выглядит трёхмерный массив?
Подскажите как вообще выглядит трехмерный массив?, 2х мерный например так: int myArr = new int; myArr={ {1,2,3}, ...

Динамический трехмерный зубчатый массив
Помогите как создать динамический зубчатый трехмерный массив, не спрашивайте зачем , просто нужно , напиши пожалуйста пример

Как создать трехмерный зубчатый массив?
Сделать трехмерный зубчастый массив. И если можно пример прямоугольного многомерного массива.

Создать трехмерный массив символов 2*2*2, инициализировать
Создать трехмерный массив символов 2*2*2, инициализировать &quot;а&quot;

Можно ли создать трехмерный ступенчатый массив
Подскажите можно ли создать трехмерный ступенчатый массив, если да то как его создать ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru