[英]How do I create my c sharp object to match my RestSharp XML response?
我刚刚开始使用RestSharp,并且使用NextFlix API能够成功创建我的Oauth令牌并从NetFlix请求数据。 但是由于某种原因,我似乎无法创建我的对象来正确匹配返回XML。
我的代码:
var client2 = new RestClient("http://api-public.netflix.com")
{
Authenticator = OAuth1Authenticator.ForProtectedResource(MyOauth.ConsumerKey, MyOauth.ConsumerSecret, MyOauth.OauthToken, MyOauth.OauthTokenSecret)
};
var request = new RestRequest("/catalog/titles/autocomplete");
request.AddParameter("term", "star wars");
var searchResults = client2.Execute<CatalogList>(request);
我尝试创建对象:
[XmlRoot("autocomplete")]
public class CatalogList
{
public List<AutoCompleteItem> Titles { get; set; }
}
[XmlRoot("autocomplete_item")]
public class AutoCompleteItem
{
[XmlElement("title short")]
public string Title { get; set; }
[XmlElement("short")]
public string ShortName { get; set; }
}
serachresults返回20个标题,我的列表有20个条目,但是AutoCompleteItem始终为空。 我已经更改了元素名称,属性等,但从未获得正确的组合。
返回的XML如下所示:
<?xml version="1.0" standalone="yes" ?>
<autocomplete>
<url_template>http://api-public.netflix.com/catalog/titles/autocomplete?{-join|&|term} </url_template>
<autocomplete_item>
<title short="Star Wars: Episode II: Attack of the Clones" />
</autocomplete_item>
我在这里想念什么?
谢谢,
杰森
[XmlRoot("autocomplete")]
public class AutocompleteList
{
[XmlElement("url_template")]
public string UrlTemplate { get; set; }
[XmlElement("autocomplete_item")]
public List<AutocompleteItem> Items { get; set; }
}
public class AutocompleteItem
{
[XmlElement("title")]
public Title ItemTitle { get; set; }
}
public class Title
{
[XmlAttribute("short")]
public string Short { get; set; }
}
内部Title
类型对于捕获XML属性short=
是必需的。
string xml = @"<?xml version=""1.0"" standalone=""yes"" ?>
<autocomplete>
<url_template>http://api-public.netflix.com/catalog/titles/autocomplete?{-join|&|term}</url_template>
<autocomplete_item>
<title short=""Star Wars: Episode II: Attack of the Clones"" />
</autocomplete_item>
</autocomplete>";
var reader = new StringReader(xml);
var ser = new XmlSerializer(typeof(AutocompleteList));
var result = (AutocompleteList) ser.Deserialize(reader);
产生的结果与
var result = new AutocompleteList
{
UrlTemplate = "http://api-public.netflix.com/catalog/titles/autocomplete?{-join|&|term}",
Items = new List<AutocompleteItem>
{
new AutocompleteItem
{
ItemTitle = new Title
{
Short = "Star Wars: Episode II: Attack of the Clones",
}
},
},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.