Dot-Net

XML 序列化中的必需屬性

  • July 27, 2017

例如我有類要序列化

[Serializable]
class Person
{
   [XmlAttribute("name")]
   string Name {get;set;}
}

我需要將 Name 屬性設為必需。如何在 .NET 中執行此操作?

如果屬性留空或為空,您可以使用XmlIgnoreAttribute與模式一起引發異常。<FieldName>Specified在序列化期間,NameSpecified將檢查屬性以確定是否應呈現該欄位,因此如果 Name 屬性為空或為空,則會引發異常。

class Person
{
  [XmlElement("name")]
  string Name { get; set; }
  [XmlIgnore]
  bool NameSpecified
  {
     get { 
             if( String.IsNullOrEmpty(Name)) throw new AgrumentException(...);

             return true;
         }
   }
}

解決此問題的最佳方法是擁有一個單獨的 XSD,用於在將 XML 傳遞到XmlSerializer. 使用 XSD 的最簡單方法XmlSerializer是從 XSD 開始,從該 XSD生成程式碼XmlSerializer使用它來驗證 XML

引用自:https://stackoverflow.com/questions/2894431