C# 反序列化元素和属性具有重复名称的XML
我想反序列化以下XML。问题是重复的元素名和属性名。我试过这种方法 但我一直得到::“帐户xmlns=”,这是不应该的 (为了可读性,我已经推荐了一些类) 最大的问题是,是否有不同的反序列化到C#obj的方法,或者正确的方法是手动进行映射 编辑 增加了一个修改后的班级结构,有人能帮助我如何组织班级吗?不确定如何处理帐户中的所有Field=APIName元素?您没有在XML文件中提供 默认值为:C# 反序列化元素和属性具有重复名称的XML,c#,xml,serialization,C#,Xml,Serialization,我想反序列化以下XML。问题是重复的元素名和属性名。我试过这种方法 但我一直得到::“帐户xmlns=”,这是不应该的 (为了可读性,我已经推荐了一些类) 最大的问题是,是否有不同的反序列化到C#obj的方法,或者正确的方法是手动进行映射 编辑 增加了一个修改后的班级结构,有人能帮助我如何组织班级吗?不确定如何处理帐户中的所有Field=APIName元素?您没有在XML文件中提供 默认值为:xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instanc
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“xmlns:xsd=”http://www.w3.org/2001/XMLSchema“
如果未提供自定义命名空间
尝试告诉您的XmlReader
不要使用名称空间
XmlReader reader = new XmlReader() { Namespaces = false };
但是:我强烈建议为您的文件使用特定的名称空间 我建议在代码中创建一个类,用上面的XML表示。完成此操作后,请使用XML序列化程序并查看生成的XML。然后您将看到XML应该是什么样子?我怀疑它是否会像您提供的那样整洁。创建一个表示XML的类是问题的一部分。不完全确定如何处理字段元素。我建议创建一个名为Fields的集合/列表/数组。您需要在帐户内、代理内和目录内各设置一个。但是要从您提供的XML中序列化/反序列化,您需要自己定制序列化/反序列化。网上有很多这样的例子,我无法控制我必须读取的文件,我基本上只获取文件夹位置,然后必须读取其中的所有xml文件。它可以工作,除了这个帐户XML文件,因为我不能反序列化它,因为我不能正确构造我的C#类。
[XmlRoot]
public class Account {
public Agents Agents { get; set; }
public Catalogs Catalogs { get; set; }
public Locations Locations { get; set; }
public Contacts Contacts { get; set; }
}
public class Agents {
[XmlArray("Agent")]
[XmlArrayItem("Field", typeof(Values))]
public Values[] Field { get; set; }
}
public class Catalogs {
[XmlArray("Catalog")]
[XmlArrayItem("Field", typeof(Values))]
public Values[] Field { get; set; }
}
public class Contacts {
[XmlArray("Contact")]
[XmlArrayItem("Field", typeof(Values))]
public Values[] Field { get; set; }
}
public class Locations {
[XmlArray("Location")]
[XmlArrayItem("Field", typeof(Values))]
public Values[] Field { get; set; }
}
public class Values {
[XmlAttribute("APIName")]
public string APIName { get; set; }
[XmlText]
public string Value { get; set; }
}
XmlReader reader = new XmlReader() { Namespaces = false };