1

当我尝试反序列化以下 XML 时,出现错误:不期望设置 xmlns=''。我在下面的班级中映射了根节点,为什么会出现该错误?

我的xml:

<Settings>  
    <Access>
        <Phone hasTextField="true">
           <Item description="CMS" />
        </Phone>
    </Access>
</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

1

您正在尝试反序列化错误的元素 - 您正在尝试反序列化Access类型,而您的顶部节点是Settings,这是应用于AccessNodes类型的名称。

试试这个:

AccessNodes settings = SettingsReader<AccessNodes>.Deserialize(...);
于 2013-07-26T20:40:52.553 回答