如何对具有属性的元素使用RestSharp的默认XmlDeserializer

时间:2012-06-08 13:31:59

标签: c# rest xml-deserialization restsharp xml-attribute

我正在尝试使用RestSharp来使用第三方REST Web服务,而我在使用默认的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? - 这看起来很奇怪,因为他们自己的例子讨论了属性,尽管在列表中。

感谢。

1 个答案:

答案 0 :(得分:0)

好吧,它似乎正在设置打破它的根!

当我删除了对

的调用
request.RootElement = "root";

它继续反序列化文档没问题。嗯...有兴趣仍然知道为什么这个修复它似乎是正确的根?