Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
KristopherRobin
143 / 139 / 11
Регистрация: 11.09.2011
Сообщений: 409
1

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

03.12.2013, 11:43. Просмотров 1399. Ответов 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 сериализация многострочных строк, отступы в xml файле

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

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

есть ли способ и нормальные отступы иметь в xml файле и при этом десериализовать без лишних пробелов и табуляций?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 11:43
Ответы с готовыми решениями:

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

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

XML сериализация
Возникла одна проблема, не могу побороть, не хватает опыта. Пытаюсь скомпилить...

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

Сериализация xml
Добрый вечер,уважаемые форумчане.Подскажите пожалуйста ,как добавть запись в...

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

вот верный:
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 11:51

XML сериализация
Есть класс, содержащий все переменные, которые будут записаны в xml файл ...

XML-сериализация объектов
Всем привет. Имеем следующий класс: public class C { ...

Не работает xml сериализация
namespace Chat { class Serializer { internal static...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru