簡體   English   中英

.net核心反序列化xml響應

[英].net core deserialize xml response

我將此 xml 響應作為來自USPS 3.0 郵政編碼查找 api 的流

<ZipCodeLookupResponse>
 <Address ID="1">
 <Address1>Unit 2</Address1>
 <Address2>8 WILDWOOD DR</Address2>
 <City>OLD LYME</City>
 <State>CT</State>
 <Zip5>06371</Zip5>
 </Address>

 <Address ID="2">
 <Address1>Unit 2</Address1>
 <Address2>8 WILDWOOD DR</Address2>
 <City>OLD LYME</City>
 <State>CT</State>
 <Zip5>06371</Zip5>
 </Address>
</ZipCodeLookupResponse>

我正在嘗試反序列化地址數組中的響應。

[XmlRoot(ElementName = "ZipCodeLookupResponse")]
public class UspsAddress
{
    [XmlArray("Address")]
    public UspsAddressResult[] Addresses {get;set;}
}

[XmlRoot(ElementName = "Address")]
public class UspsAddressResult
{
    [XmlElement(ElementName = "Address2")]
    public string Adress1 { get; set; }
    [XmlElement(ElementName = "Address1")]
    public string Adress2 { get; set; }
    [XmlElement(ElementName = "City")]
    public string City { get; set; }
    [XmlElement(ElementName = "State")]
    public string State { get; set; }
    [XmlElement(ElementName = "Zip5")]
    public string Zip { get; set; }
}

此代碼始終返回一個空數組。 如何修復此代碼以從響應中獲取兩個地址?

...

    var content = await res.Content.ReadAsStreamAsync();

    var serializer = new XmlSerializer(typeof(UspsAddress));

    var results = (UspsAddress)serializer.Deserialize(content);

您可以使用 `XmlElement` 屬性來設置子元素的名稱,而不是使用XmlArrayXmlArrayItem 反序列化器將識別出應該將多個元素反序列化為對象列表。

您的課程如下所示:

[XmlRoot(ElementName = "ZipCodeLookupResponse")]
public class UspsAddress
{
    [XmlElement("Address")]
    public UspsAddressResult[] Addresses {get;set;}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM