Десериализовать строку XML в объект C # - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть этот класс

[Serializable]
[XmlRoot(ElementName = "Cat")]
public class Cat
{
    /// <summary>
    /// Gets the cat name
    /// </summary>
    [XmlAttribute("CatName")]
    public string CatName{ get; }

    /// <summary>
    /// Gets the cat origin
    /// </summary>
    [XmlAttribute("CatOrigin")]
    public string CatOrigin{ get; }
}

Я пытаюсь десериализовать эту строку для моего объекта 'Cat'

string myString= "<Cat CatName= \"A\" CatOrigin=\"B\" />";

Я использую этот метод для десериализации:

 public Cat DeserializeCat(string def)
    {
        XmlSerializer deserializer = new XmlSerializer(typeof(Cat));
        TextReader reader = new StringReader(def);
        object obj = deserializer.Deserialize(reader);
        Cat XmlData = (Cat)obj;
        reader.Close();
        return XmlData;
    }

Но я всегда получаю объект с нулевыми значениями для каждого параметра.У вас есть идея, почему я не получаю значения из моей строки в мой объект, пожалуйста?

1 Ответ

0 голосов
/ 18 сентября 2018

В данный момент ваши свойства в классе Cat доступны только для чтения, поскольку он содержит только get.

. Для сохранения данных в соответствующем свойстве вам необходимо использовать set.

[Serializable]
[XmlRoot(ElementName = "Cat")]
public class Cat
{
    /// <summary>
    /// Gets the cat name
    /// </summary>
    [XmlAttribute("CatName")]
    public string CatName{ get; set; }

    /// <summary>
    /// Gets the cat origin
    /// </summary>
    [XmlAttribute("CatOrigin")]
    public string CatOrigin{ get; set; }
}

POC:

enter image description here

Ссылка: набор (ссылка C #)

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