Как использовать XmlDeserializer RestSharp по умолчанию для элементов с атрибутами

Я пытаюсь использовать RestSharp для использования стороннего веб-сервиса REST, и у меня возникают проблемы с тем, чтобы десериализация XML по умолчанию работала с XML, который я возвращаю.

XML находится в форме -

<root>
   <someURL href="192.168.1.1" />
   <anotherURL href="192.168.1.2" />
   <thirdURL href="192.168.1.3" />
</root>

Мой request.RootElement имеет значение «root», и я изначально пытался создать следующий объект для десериализации RestSharp в:

public class URLInfo
{
    public string someURL { get; set; }
    public string anotherURL { get; set; }
    public string thirdURL { get; set; }
}

Я понял, что это не сработает из-за атрибутов, поэтому я подумал на основе приведенного здесь примера (https://github.com/restsharp/RestSharp/wiki/Deserialization) — хотя здесь говорится о списке элементов, я попытался создать следующее:

public class URLInfo
{
    public HrefAttribute someURL { get; set; }
    public HrefAttribute anotherURL { get; set; }
    public HrefAttribute thirdURL { get; set; }
}

public class HrefAttribute
{
    public string href { get; set; }
}

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

Спасибо.


person Adam Cobb    schedule 08.06.2012    source источник


Ответы (1)


Хорошо, похоже, это был установленный корень, который сломал его!

Когда я удалил вызов

request.RootElement = "root";

Он продолжал десериализовать документ без проблем. Хм ... Было бы интересно узнать, почему это исправило это, поскольку кажется, что это правильный корень?

person Adam Cobb    schedule 08.06.2012