【问题标题】:XML Deserialization not deserializing elementXML反序列化不反序列化元素
【发布时间】:2011-06-24 11:46:47
【问题描述】:

下午好,

我有以下课程

public class MaintenanceBundle
{
    [XmlAttribute(AttributeName = "Required")]
    public string Required { get; set; }

    [XmlAttribute(AttributeName = "ID")]
    public string Id { get; set; }

    [XmlElement(ElementName = "Title")]
    public string Title { get; set; }

    [XmlElement(ElementName = "MntReason")]
    public MaintenanceReason Reason { get; set; }

    [XmlElement(ElementName = "Tasks")]
    public MaintenanceBundleCollection Tasks { get; set; }
}

public class MaintenanceBundleCollection
{
    [XmlElement(ElementName = "Task")]
    public List<MaintenanceBundleTask> Tasks { get; set; }
}

public class MaintenanceReason
{
    [XmlAttribute(AttributeName = "Every")]
    public string Every { get; set; }

    [XmlElement(ElementName = "Mileage", IsNullable = true)]
    public int? Mileage { get; set; }

    [XmlElement(ElementName = "Time", IsNullable = true)]
    public TimeInterval TimeInterval { get; set; }
}

我正在尝试使用这些类将此 xml 反序列化为对象。这是 XML

<MntBundle Required="Yes" ID="S08870641702009101200000">
    <Title>DIRT OR DUSTY ROADS - 5000 MILES / 6 MONTHS</Title>
    <MntReason Every="No">
      <Mileage Unit="MILES">5000</Mileage>
    </MntReason>
    <Tasks>
      <Task ID="4-2" />
      <Task ID="4-3">
        <NMVCQualifier>Drive Shaft Boots</NMVCQualifier>
        <MVCQualifiers>
          <Qualifier Name="Drive Type">4WD</Qualifier>
        </MVCQualifiers>
      </Task>
      <Task ID="4-1" />
      <Task ID="4-4" />
      <Task ID="5-1">
        <MVCQualifiers>
          <Qualifier Name="Drive Type">4WD</Qualifier>
        </MVCQualifiers>
      </Task>
      <Task ID="6-1" />
      <Task ID="7-1" />
    </Tasks>
  </MntBundle>

由于某种原因,我无法在 MntReason 元素中获取 Mileage 元素。它一直返回为空。任何想法我做错了什么?所有其他元素似乎都可以正确反序列化。我从我的帖子中遗漏了不相关的课程。如果有人有任何指示我如何正确检索这个值,我很想听听。非常感谢您的帮助。

干杯,
~ck 在圣地亚哥

【问题讨论】:

  • 你的 Mileage 元素很复杂(它有一个Unit 属性)——可能就是这样。
  • 似乎很多人都遇到了处理 Nullable 类型和 XML 序列化的问题。这篇文章似乎相关:stackoverflow.com/questions/2074240/…

标签: c# xml serialization xml-serialization xmlserializer


【解决方案1】:

未经测试,但它应该需要类似下面的类。我不确定XmlText 会如何处理整数。

public class Mileage
{
   [XmlAttribute(AttributeName = "Unit")]
   public string Unit {get; set;}

   [XmlText]
   public int Mileage {get; set;}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多