XML序列化中的必需属性

dar*_*rja 9 .net xml-serialization

例如,我有要序列化的类

[Serializable]
class Person
{
    [XmlAttribute("name")]
    string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要使Name属性成为必需.如何在.NET中执行此操作?

Pie*_*kel 6

解决此问题的最佳方法是使用单独的 XSD 来验证 XML,然后再将其传递到XmlSerializer. 使用 XSD 的最简单方法XmlSerializer是从 XSD 开始,从该 XSD生成 的代码,XmlSerializer使用它来验证 XML


小智 6

如果该属性保留为空或为null,则可以将和XmlIgnoreAttribute一起使用<FieldName>Specified,引发异常。在序列化期间,NameSpecified将检查该属性以确定是否应呈现该字段,因此,如果Name属性保留为null或为空,则将引发异常。

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

              return true;
          }
    }
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 5

首先,[Serializable]XML Serializer 不使用。

其次,没有办法让它成为必需。