2016-12-06 5 views
0

내 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; 
+1

@ 온라인 CSHARP 클래스에 XML 코드를 변환 할 수 있습니다 "항목"과 재산 "Section.Item"에서 "Section.Items"로 설정합니다. – Udontknow

+0

오, 네, 지적 해 주셔서 고마워요! –

답변

0

는 다음과 같은 시도 할 수 :

public class Items 
{ 
    [XmlElement("Text")] 
    public string Text { get; set; } 
    [XmlElement("Url")] 
    public string Url { get; set; } 
    [XmlElement("Description")] 
    public string Description { get; set; } 
    [XmlElement("Image")] 
    public Image Image { get; set; } 
} 
public class Image 
{ 
    [XmlAttribute("source")] 
    public string source { get; set; } 
} 
+0

그것은 작동합니다! 감사 –

0

귀하의 속성이 있어야한다 아래 같은 것을, 당신의 XML을 비교. 당신은, 당신은 유형 "항목"의 이름을 변경해야 혼란을 방지하기 위해 http://xmltocsharp.azurewebsites.net/

[XmlRoot(ElementName = "Query", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Query 
{ 
    [XmlAttribute(AttributeName = "space", Namespace = "http://www.w3.org/XML/1998/namespace")] 
    public string Space { get; set; } 
    [XmlText] 
    public string Text { get; set; } 
} 

[XmlRoot(ElementName = "Text", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Text 
{ 
    [XmlAttribute(AttributeName = "space", Namespace = "http://www.w3.org/XML/1998/namespace")] 
    public string Space { get; set; } 
    [XmlText] 
    public string text { get; set; } 
} 

[XmlRoot(ElementName = "Url", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Url 
{ 
    [XmlAttribute(AttributeName = "space", Namespace = "http://www.w3.org/XML/1998/namespace")] 
    public string Space { get; set; } 
    [XmlText] 
    public string Text { get; set; } 
} 

[XmlRoot(ElementName = "Description", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Description 
{ 
    [XmlAttribute(AttributeName = "space", Namespace = "http://www.w3.org/XML/1998/namespace")] 
    public string Space { get; set; } 
    [XmlText] 
    public string Text { get; set; } 
} 

[XmlRoot(ElementName = "Image", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Image 
{ 
    [XmlAttribute(AttributeName = "source")] 
    public string Source { get; set; } 
    [XmlAttribute(AttributeName = "width")] 
    public string Width { get; set; } 
    [XmlAttribute(AttributeName = "height")] 
    public string Height { get; set; } 
} 

[XmlRoot(ElementName = "Item", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Items 
{ 
    [XmlElement(ElementName = "Text", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Text Text { get; set; } 
    [XmlElement(ElementName = "Url", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Url Url { get; set; } 
    [XmlElement(ElementName = "Description", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Description Description { get; set; } 
    [XmlElement(ElementName = "Image", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Image Image { get; set; } 
} 

[XmlRoot(ElementName = "Section", Namespace = "http://opensearch.org/searchsuggest2")] 
public class Section 
{ 
    [XmlElement(ElementName = "Item", Namespace = "http://opensearch.org/searchsuggest2")] 
    public List<Items> Item { get; set; } 
} 

[XmlRoot(ElementName = "SearchSuggestion", Namespace = "http://opensearch.org/searchsuggest2")] 
public class SearchItem 
{ 
    [XmlElement(ElementName = "Query", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Query Query { get; set; } 
    [XmlElement(ElementName = "Section", Namespace = "http://opensearch.org/searchsuggest2")] 
    public Section Section { get; set; } 
    [XmlAttribute(AttributeName = "xmlns")] 
    public string Xmlns { get; set; } 
    [XmlAttribute(AttributeName = "version")] 
    public string Version { get; set; } 
}