Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для KristopherRobin
145 / 142 / 11
Регистрация: 11.09.2011
Сообщений: 419

Xml сериализация многострочных строк, отступы в xml файле

03.12.2013, 11:43. Показов 3715. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть класс который сериализуется в xml и содержит многострочную строку.
SerializableClassWithMultilineString
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
class SerializableClassWithMultilineString
{
    public string Text;
 
    public bool NotSaved
 
    public void Save()
    {
        if (NotSaved)
        {
            XmlWriterSettings xmlwSet = new XmlWriterSettings();
                
            xmlwSet.Indent = true;
 
            xmlwSet.NewLineHandling = NewLineHandling.Entitize;
 
            using (XmlWriter xw = XmlWriter.Create(XmlFile, xmlwSet))
            {
                XmlSerializer s = new XmlSerializer(typeof(ReminderList));
                s.Serialize(xw, this);
            }
 
            NotSaved = false;
        }
    }
 
    public static ReminderList Load(string Path)
    {
        XmlReaderSettings xmlrSet = new XmlReaderSettings();
 
        xmlrSet.IgnoreWhitespace = true;
 
        using (XmlReader xr = XmlReader.Create(Path, xmlrSet))
        {
            XmlSerializer d = new XmlSerializer(typeof(ReminderList));
            ReminderList l = (ReminderList)d.Deserialize(xr);
 
            l.XmlFile = Path;
 
            return l;
        }
    }
}

все работает нормально, но в xml файле многострочная строка выглядит так:

т.е. без нормальных отступов
как сделать с отступами?

если сделать самому такие отступы, то в десериализованной строке появляется лишняя табуляция

есть ли способ и нормальные отступы иметь в xml файле и при этом десериализовать без лишних пробелов и табуляций?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2013, 11:43
Ответы с готовыми решениями:

Парсинг многострочных значений XML
Имеем такой док <root> <tab> Line1 Line2 Line3 Line4 </tab> </root>

XML сериализация
Добрый день! 1. Как при сериализации XmlSerializer xmlSerializer = new XmlSerializer(MyObj.GetType()); FileStream saveFile =...

Сериализация XML
Доброго времени суток не получается создать объект класса XmlSerializer Ошибка: Дополнительные сведения: Чтобы поддерживать сериализацию...

1
 Аватар для KristopherRobin
145 / 142 / 11
Регистрация: 11.09.2011
Сообщений: 419
03.12.2013, 11:51  [ТС]
в примере неправльный код

вот верный:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.IO;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
 
namespace Rem
{
    public class ReminderList
    {
        public SortableReminderList Entries { get; set; }
 
        private string XmlFile { get; set; }
 
        [XmlIgnore]
        public bool Changed { get; set; }
        [XmlIgnore]
        public bool NotSaved { get; set; }
 
        public void Save()
        {
            if (NotSaved)
            {
                XmlWriterSettings xmlwSet = new XmlWriterSettings();
                
                xmlwSet.Indent = true;
                xmlwSet.NewLineHandling = NewLineHandling.Entitize;
 
                using (XmlWriter xw = XmlWriter.Create(XmlFile, xmlwSet))
                {
                    XmlSerializer s = new XmlSerializer(typeof(ReminderList));
                    s.Serialize(xw, this);
                }
 
                NotSaved = false;
                //MessageBox.Show("List saved!");
            }
        }
 
        public static ReminderList Load(string Path)
        {
            if (!File.Exists(Path))
            {
                string RelativePath = string.Concat('\\', Application.ProductName, '\\', Path);
                string SelfFolderPath = string.Concat(Application.StartupPath, '\\', Path);
 
                string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + RelativePath;
 
                string LocalAppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + RelativePath;
 
                string ProgramDataPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + RelativePath;
 
                if (File.Exists(SelfFolderPath))
                    Path = SelfFolderPath;
                else if (File.Exists(AppDataPath))
                    Path = AppDataPath;
                else if (File.Exists(LocalAppDataPath))
                    Path = LocalAppDataPath;
                else if (File.Exists(ProgramDataPath))
                    Path = ProgramDataPath;
                else
                    throw new FileNotFoundException("Settings file not found.", Path);
            }
 
            XmlReaderSettings xmlrSet = new XmlReaderSettings();
 
            xmlrSet.IgnoreWhitespace = true;
 
            using (XmlReader xr = XmlReader.Create(Path, xmlrSet))
            {
                XmlSerializer d = new XmlSerializer(typeof(ReminderList));
                ReminderList l = (ReminderList)d.Deserialize(xr);
 
                l.XmlFile = Path;
 
                return l;
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2013, 11:51
Помогаю со студенческими работами здесь

Сериализация в xml
Имеется несколько классов следующего вида (схематично): public class A { public List<B> b = new List<B>(); ...

Сериализация в XML
Помогите пожалуйста! У меня есть калькулятор, а его вычисления надо сериализовать в XML. Как это сделать? using System; using...

Сериализация в Xml в С#
Доброе всем время суток! Нужна помощь по сериализации. Есть несколько проблем: 1) при попытке сериализации стандартного класса Font...

Сериализация XML
Всем привет, что-то я не могу въехать в такую простую вещь... У меня есть XML файлик: <?xml version="1.0"...

XML-сериализация
как мне это преобразовать в xml? или как то так. using System; using System.Collections.Generic; using System.Linq; using...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru