XML Десериализация строковых элементов с новыми строками в C#

Я не могу понять, почему этот тест не проходит

Тест заключается в следующем:

дается следующий XML:

<?xml version="1.0" encoding="utf-8"?>
  <foo>
<account>
 1234567890
</account>
<deptCode>
 ABCXYZ
</deptCode>
</foo>

и следующий класс:

class Foo  {

  [XmlElement(ElementName = "account", DataType = "normalizedString")]
  string account;

  [XmlElement(ElementName = "deptCode", DataType = "normalizedString"]
  string deptCode;

}

когда этот XML десериализуется с помощью:

XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo myFoo = (Foo) serializer.Deserialize(xmlReader);

я получаю следующие значения:

Foo.account = "\r\n 1234567890 \r\n"
Foo.deptCode = "\r\n ABCXYZ \r\n"

вместо ожидаемых

Foo.account = "1234567890"
    Foo.deptCode = "ABCXYZ"

Как я могу сделать так, чтобы процесс десериализации давал мне ожидаемые результаты? Я думал, что DataType="normalizedString" может сделать это, но, похоже, это не имеет никакого эффекта, и когда я использую XmlReaderSettings. IgnoreWhitespace, он просто убирает символ "\r", оставляя мне "\n 1234567890"

6
задан Kirill Polishchuk 20 October 2011 в 17:29
поделиться