c# - 如何将 xml 反序列化为 C# 中的对象,如果 xml 中缺少某些 xml

标签 c# xml serialization

我有一个 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;
   }

关于c# - 如何将 xml 反序列化为 C# 中的对象,如果 xml 中缺少某些 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604936/

相关文章:

当列表包含一些相同的 DateTime 值时,C# DateTime OrderBy

c# - 分配给 SqlXml 参数的 XML 进行了额外编码?

java - Jaxb 强制继承类的属性首先被解码

iOS - 将项目添加到 plist

GWT 获取序列化策略失败

c# - 如何在单击按钮时创建新面板?

c# - 更改 C# Parallel.For 循环的增量值

python - 在 DRF 中序列化自定义相关字段

serialization - Dart的built_value库,如何在flutter中生成serializer文件?

c# - 如何获取 IEnumerable 列表值?