使用序列化从XML文件读入C#类
发布时间:2020-12-16 23:49:48 所属栏目:百科 来源:网络整理
导读:我有以下 XML文件,我试图使用DE-serialization读入c#中的类: ?xml version="1.0"? PropertiesMapping Property WEB_ClassInfoRequest/WEB_Class COM_ClassCInfoReq/COM_Class Mappings Map WEB_PropertytheId/WEB_Property COM_PropertyTheID/COM_Property
我有以下
XML文件,我试图使用DE-serialization读入c#中的类:
<?xml version="1.0"?> <PropertiesMapping> <Property> <WEB_Class>InfoRequest</WEB_Class> <COM_Class>CInfoReq</COM_Class> <Mappings> <Map> <WEB_Property>theId</WEB_Property> <COM_Property>TheID</COM_Property> </Map> <Map> <WEB_Property>theName</WEB_Property> <COM_Property>NewName</COM_Property> </Map> </Mappings> </Property> </PropertiesMapping> 以下是我正在使用的代码,虽然它没有错误地执行,但没有数据被读入类PropertiesMapping,我在哪里错了? PropertiesMapping pm = null; try { System.IO.StreamReader str = new System.IO.StreamReader(@"PropertyMapping.xml"); System.Xml.Serialization.XmlSerializer xSerializer = new System.Xml.Serialization.XmlSerializer(typeof(PropertiesMapping)); pm = (PropertiesMapping)xSerializer.Deserialize(str); str.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true,Namespace = "")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "",IsNullable = false)] public class PropertiesMapping { private string m_WEB_Class = ""; private string m_COM_Class = ""; private List<IndividualProperties> m_EachProperty = null; public string WEB_Class { get { return m_WEB_Class; } set { m_WEB_Class = value; } } public string COM_Class { get { return m_COM_Class; } set { m_COM_Class = value; } } public IndividualProperties GetIndividualProperties(int iIndex) { return m_EachProperty[iIndex]; } public void SetIndividualProperties(IndividualProperties theProp) { m_EachProperty.Add(theProp); } } public class IndividualProperties { private string m_WEB_PropertyField; private string m_COM_PropertyField; public string WEB_Property { get { return this.m_WEB_PropertyField; } set { this.m_WEB_PropertyField = value; } } public string COM_Property { get { return this.m_COM_PropertyField; } set { this.m_COM_PropertyField = value; } } }
您可以使用
XmlElementAttribute 来简化C#命名.
您将需要使用
类别: [XmlType("PropertiesMapping")] public class PropertyMapping { public PropertyMapping() { Properties = new List<Property>(); } [XmlElement("Property")] public List<Property> Properties { get; set; } } public class Property { public Property() { Mappings = new List<Mapping>(); } [XmlElement("WEB_Class")] public string WebClass { get; set; } [XmlElement("COM_Class")] public string ComClass { get; set; } [XmlArray("Mappings")] [XmlArrayItem("Map")] public List<Mapping> Mappings { get; set; } } [XmlType("Map")] public class Mapping { [XmlElement("WEB_Property")] public string WebProperty { get; set; } [XmlElement("COM_Property")] public string ComProperty { get; set; } } 演示: PropertyMapping result; var serializer = new XmlSerializer(typeof(PropertyMapping)); using(var stream = new StringReader(data)) using(var reader = XmlReader.Create(stream)) { result = (PropertyMapping) serializer.Deserialize(reader); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |