2016-08-19 19 views
0

リストを持つオブジェクトに対してXMLをデシリアライズするときに問題が発生します。デシリアライズはエラーなく実行されますが、リソースリストは空です。XMLに返されるリソースが1つあることがわかります。正しくデシリアライズされていないようです。私は上記のコードの2行目にXMLをオブジェクトに逆シリアル化するときの空のリスト

  var ser = new XmlSerializer(typeof(SearchResult)); 
      var test = result.Content.ReadAsStringAsync(); 
      var t = (SearchResult)ser.Deserialize(result.Content.ReadAsStreamAsync().Result); 

変数「test」をデシリアライズするには、次のコードを使用しています

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<ns3:searchResult total="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns3="ers.ise.cisco.com"> 
<resources> 
<resource id="76a4b0f2-64e2-11e6-9f15-00505688a404" name="5555884552"> 
<link rel="self" href="https://servername123:9060/ers/config/guestuser/76a4b0f2-64e2-11e6-9f15-00505688a404" type="application/xml"/> 
</resource> 
</resources> 
</ns3:searchResult> 

に等しいだから私はに期待しますリソースリストでExistingWifiAccountDtoを1つ取得します。しかし、私はしません。それは空です。私は間違って何をしていますか?

オブジェクトのマッピングのためのクラスは、あなたがそれはあなたの状況に継承されていないため、「リソース」列に空の文字列に名前空間を設定する必要があります

[XmlRoot(ElementName = "searchResult", Namespace = "ers.ise.cisco.com")] 
public class SearchResult 
{ 
    public SearchResult() 
    { 
     Resources = new List<ExistingWifiAccountDto>(); 
    } 

    [XmlArray("resources")] 
    [XmlArrayItem("resource", typeof(ExistingWifiAccountDto))] 
    public List<ExistingWifiAccountDto> Resources { get; set; } 
} 

public class ExistingWifiAccountDto 
{ 
    public ExistingWifiAccountDto() 
    { 
    } 

    [XmlAttribute("id")] 
    public string Id { get; set; } 
    [XmlAttribute("name")] 
    public string Name { get; set; } 
    [XmlElement("link")] 
    public LinkDto Link { get; set; } 
} 

public class LinkDto 
{ 
    public LinkDto() 
    { 
    } 

    [XmlAttribute("rel")] 
    public string Rel { get; set; } 
    [XmlAttribute("href")] 
    public string Href { get; set; } 
    [XmlAttribute("type")] 
    public string Type { get; set; } 
} 

答えて

0

下回っています。これは子要素に流れます。

これは、それが正しくデシリアライズするようになります

[XmlArray("resources", Namespace = "")] 

[XmlArray("resources")] 

を変更してみてください、代わりに、あなたはまた、フォーム属性でダウン「資源」から各ノードを設定できます

Form = XmlSchemaForm.Unqualified 

乾杯

+0

ネームスペースをリソース上で空に設定した後は、完全に機能します。ありがとう! – Mort

関連する問題