簡體   English   中英

將XML反序列化為對象C#

[英]Deserialize XML to object C#

我正在嘗試將xml序列化為對象,但在序列化后,我的傳輸協議列表為空。 我很確定這很容易,但我找不到我的錯誤。

我有以下xml

<transport-agreements type="array">
   <transport-agreement>
     <id type="integer">1047</id>
     <description>Standard</description>
     <products type="array">
       <product>not important</product>
     </products>
   </transport-agreement>
   <transport-agreement>
     <id type="integer">1048</id>
     <description>Standard</description>
     <products type="array">
       <product>not important</product>
    </products>
   </transport-agreement>
</transport-agreements>

我有以下代碼:

var resultContent = await response.Content.ReadAsStreamAsync();
var serializer = new XmlSerializer(typeof(TransportAgreementRoot));
var transportAgreements = (TransportAgreementRoot)serializer.Deserialize(resultContent);

我的課程:

[Serializable, XmlRoot("transport-agreements")]

    public class TransportAgreementRoot
    {
        [XmlArrayItem("transport-agreement")]
        TransportAgreement[] TransportAgreements { get; set; }         
     }

    public class TransportAgreement
    {
        [XmlElement("description")]
        public string Description { get; set; }
        [XmlElement("id")]
        public int Id { get; set; }
        [XmlElement("number")]
        public string Number { get; set; }
        [XmlElement("carrier")]
        public Carrier Carrier { get; set; }
        [XmlArray("products")]
        [XmlArrayItem("product")]
        public Product[] Products { get; set; }

    }

您可以使用一些在線轉換器,它們將為您提供完整的類圖。 我最喜歡的是: 這個

[XmlRoot("transport-agreements")]
public class TransportAgreementRoot
{
    [XmlElement("transport-agreement")]
    public TransportAgreement[] TransportAgreements { get; set; }
}

[XmlRoot("transport-agreement")]
public class TransportAgreement
{
    [XmlElement("description")]
    public string Description { get; set; }
    [XmlElement("id")]
    public int Id { get; set; }
    // other properties
}

我將XmlArray更改為XmlElement。 Array會在xml文件中添加一個額外的標記。

   [Serializable, XmlRoot("transport-agreements")]

    public class TransportAgreementRoot
    {
        [XmlElement("transport-agreement")]
        TransportAgreement[] TransportAgreements { get; set; }
    }

暫無
暫無

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

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