1

XML の下でデシリアライズしようとすると、次のエラーが表示されます: Settings xmlns='' was not expected. 以下のクラスでルート ノードをマップしましたが、なぜそのエラーが発生するのですか?

私のxml:

<Settings>  
    <Access>
        <Phone hasTextField="true">
           <Item description="CMS" />
        </Phone>
    </Access>
</Settings>

クラスSettings.cs:

[XmlRoot("Settings")]
public class AccessNodes
{
    [XmlElement("Access")]
    public Access AccessList { get; set; }
}

[XmlType("Access")]
public class Access
{
  [XmlElement("Phone")]
  public AccessItem Phone { get; set; }
}

public class AccessItem
{
  public AccessItem()
  {
     Items = new List<Item>();
  }

  [XmlAttribute("hasTextField")]
  public bool HasTextField { get; set; }

  [XmlElement("Item")]
  public List<Item> Items { get; set; }

}

[XmlType("Item")]
public class Item
{
 [XmlAttribute("description")]
  public string Description { get; set; }
} 

SettingsReader.cs

public static class SettingsReader<T>
    {
        public static T Deserialize(string basePath)
        {
            string filename = basePath + ".xml";
            T t = default(T);
            XmlSerializer xs = new XmlSerializer(typeof(T));
            using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                t = (T)xs.Deserialize(fs);
            }
            return t;
    }

SettingsReader.cs の呼び出し

Access access = SettingsReader<Access>.Deserialize(Server.MapPath("~/App_Data/access"));
4

1 に答える 1