Xml десериализация. Можно ли сохранить формат строки из xml? - PullRequest
0 голосов
/ 23 марта 2020

Я использую new XmlSerializer(typeof(R)) для получения объекта от xml.

Но я сталкиваюсь с проблемой, что значение атрибута в xml имеет какой-то формат, например:

<dueNote value="Дата перевода валюты = 12.03.2020 18:31:58
Курс доллара к рублю = 71.472
Курс франка к рублю = 76.457
Курс евро к рублю = 81.0207
Тип расчетного расстояния = 2
"/>

Можно ли как-то сохранить формат атрибута xml? В настоящее время после десериализации эта строка становится плоской, без каких-либо символов новой строки и т. Д. c.

Есть ли какая-либо аннотация, например 'XmlAttrubte', которая отвечает за форматирование?

Код:

[XmlElement("dueNote")]
public StringValueElement DueNote { get; set; }

public class StringValueElement
    {
        [XmlAttribute("value")]
        public string Value { get; set; }

        public StringValueElement(object value)
        {
            Value = Convert.ToString(value);
        }

        public StringValueElement()
        {
        }
    }

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете использовать XML символьные объекты, чтобы отметить конец строки внутри значения атрибута

<?xml version="1.0"?>
<dueNote value="Дата перевода валюты = 12.03.2020 18:31:58&#xA;
Курс доллара к рублю = 71.472&#xA;
Курс франка к рублю = 76.457&#xA;
Курс евро к рублю = 81.0207&#xA;
Тип расчетного расстояния = 2&#xA;
">
</dueNote>

Значением атрибута может быть только обычный текст, а не структурированный текст, специальные символы необходимо кодировать как символьные объекты.

Разрывы строк допускаются в значениях атрибутов XML, однако в соответствии с рекомендацией W3 C ваш синтаксический анализатор XML должен нормализовать все пробельные символы в пространстве (0x20).

http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize

...