簡體   English   中英

如何在C#中將xml反序列化為對象,如果xml中缺少某些xml

[英]How to deserialize xml to object in C#, If some xml missing in the xml

我有一個xml有效負載,有很多可用的xml元素,我已經聲明了類屬性中的所有元素,當我嘗試序列化時,它帶有所有節點,這里我在反序列化之前刪除了一些xml元素,然后我試圖反序列化xml,這里得到錯誤。

沒有聲明的元素可以反序列化嗎? 我需要在沒有某些元素的情況下反序列化。 因為反序列化xml有效負載是動態的,所以它來自另一個供應商。 請幫我。

代碼塊:

類:

[Serializable]
public class CSSngSectorCable
{
    [XmlElement("cableID")]
    public Int32 CSSngCableId { get; set; }
    public string RFDSSection { get; set; }
    public string RFDSSector { get; set; }
    public Int32 RFDSCableNumber { get; set; }
    [XmlElement("cableNumber")]
    public string CSSngCableNumber { get; set; }

    [XmlElement("feederType")]
    public string CSSngFeederType { get; set; }
    [XmlElement("feederLength")]
    public string CSSngFeederLength { get; set; }
    public int CableRowNumber { get; set; }
}

要序列化的代碼:

var cables= new SectorCable();
///added some code
string serializevalue = SerializationHelper.SerializeToXml(cables, true);

序列化輸出:

<cable>
      <cableID>1</cableID>
      <cableNumber>2</cableNumber>
      <feederType>15.24</feederType>
      <feederLength></feederLength>
</cable>

要反序列化的數據:

<cable>
<cableID>1</cableID>
<cableNumber>2</cableNumber>
</cable>

反序列化代碼:

public CSSngSectorCable GetCableFromDynamicXML(StreamReader reader)
    {
        try
        {
            var serializer = new XmlSerializer(typeof(CSSngSectorCable));
            var cables = (CSSngSectorCable)serializer.Deserialize(reader);
            return cables;
        }
        catch (Exception ex)
        {
            throw;
        }

在這里它沒有正常工作它拋出異常。 如何解決問題。

 public class MyClass
 {
   [XmlElement(IsNullable = true)]
   public string Group;
   }

暫無
暫無

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

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