【发布时间】:2016-12-06 13:02:29
【问题描述】:
我的 Xml 如下所示:
<SearchSuggestion xmlns="http://opensearch.org/searchsuggest2" version="2.0">
<Query xml:space="preserve">middle ages</Query>
<Section>
<Item>
<Text xml:space="preserve">Middle Ages</Text>
<Url xml:space="preserve">https://en.wikipedia.org/wiki/Middle_Ages</Url>
<Description xml:space="preserve">
In the history of Europe, the Middle Ages or medieval period lasted from the 5th to the 15th century. It began with the fall of the Western Roman Empire and merged into the Renaissance and the Age of Discovery.
</Description>
<Image source="https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/JuengeresMathildenkreuz.jpg/35px-JuengeresMathildenkreuz.jpg" width="35" height="50"/>
</Item>
<Item>
<Text xml:space="preserve">Middle Ages in film</Text>
<Url xml:space="preserve">https://en.wikipedia.org/wiki/Middle_Ages_in_film</Url>
<Description xml:space="preserve">
Medieval films imagine and portray the Middle Ages through the visual, audio and thematic forms of cinema.
</Description>
<Image source="https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Fairbanks_Robin_Hood_standing_by_wall_w_sword.jpg/40px-Fairbanks_Robin_Hood_standing_by_wall_w_sword.jpg" width="40" height="50"/>
</Item>
</Section>
</SearchSuggestion>
我的对象如下所示:
[XmlRoot("SearchSuggestion", Namespace = "http://opensearch.org/searchsuggest2")]
public class SearchItem
{
[XmlElement("Query")]
public string query { get; set; }
[XmlElement("Section")]
public Section section { get; set; }
}
public class Section
{
[XmlElement("Item")]
public Item[] items { get; set; }
}
public class Items
{
[XmlElement("Text")]
public string Text { get; set; }
[XmlElement("Url")]
public string Url { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
[XmlAttribute("source")]
public string source { get; set; }
}
}
我想存储“源”属性 Url,但在运行程序后,我不断在 infoResult 数组中得到一个空的源字符串。 我的控制器如下所示:
string wikiResponse; //raw response from REST endpoint
SearchItem wikiXmlResponse = null; //Deserialized response
wikiResponse = await httpClient.GetStringAsync(queryUri);
var buffer = System.Text.Encoding.UTF8.GetBytes(wikiResponse);
using (var stream = new MemoryStream(buffer)) {
var serializer = new XmlSerializer(typeof(SearchItem));
wikiXmlResponse (SearchItem)serializer.Deserialize(stream);
}
Items [] infoResult = wikiXmlResponse.section.items;
【问题讨论】:
-
为防止混淆,您应该将类型“Items”重命名为“Item”,并将您的属性“Section.Item”重命名为“Section.Items”。
-
哦,是的,感谢您的指出!
标签: c# xml xml-deserialization wikipedia-api