C# XML反序列化:完整指南
背景:
反序列化是指将序列化数据转换回其原始对象格式的过程。本文提供一个完整的指南,介绍如何将XML文档反序列化到表示XML结构的自定义C#类中。
反序列化过程:
[Serializable]
和[XmlElement]
属性将XML元素映射到类属性。<code class="language-csharp">[Serializable()] public class Car { [XmlElementAttribute("StockNumber")] public string StockNumber { get; set; } [XmlElementAttribute("Make")] public string Make { get; set; } [XmlElementAttribute("Model")] public string Model { get; set; } } [XmlRootAttribute("Cars", IsNullable = false)] public class Cars { [XmlArrayItem(typeof(Car))] public Car[] Car { get; set; } }</code>
Cars
类的实例中。<code class="language-csharp">public class CarSerializer { public Cars Deserialize(string path) { // 读取XML文件 XmlSerializer serializer = new XmlSerializer(typeof(Cars)); using (StreamReader reader = new StreamReader(path)) { // 将XML反序列化到Cars对象 return (Cars)serializer.Deserialize(reader); } } }</code>
替代方法:
另一种方法是使用XSD(XML模式定义)生成符合XML结构的C#类。
foo.xml
xsd foo.xml
xsd foo.xsd /classes
foo.cs
,其中包含XML结构的C#类。使用XmlReader
的替代实现:
<code class="language-csharp">XmlSerializer ser = new XmlSerializer(typeof(Cars)); Cars cars; using (XmlReader reader = XmlReader.Create(path)) { cars = (Cars)ser.Deserialize(reader); }</code>
通过以上步骤,您可以轻松地将XML数据反序列化到C#对象中,方便后续处理和使用。 请注意将@"path/to/cars.xml"
替换为您的实际XML文件路径。
以上是如何将XML当选为C#类?的详细内容。更多信息请关注PHP中文网其他相关文章!