将XML数据映射到C#中的类

本文关键字:XML 数据 映射 | 更新日期: 2023-09-27 18:01:06

如果我有一个外部XML提要和一个内部类,那么自动读取提要并将数据映射到类的新实例的最佳方法是什么?

因此,如果xml提要类似

<people>
   <person>
      <name>Bob</name>
   </person>
    <person>
      <name>Bill</name>
   </person>
</people>

我的类Person有一个属性Name。现在我正在使用XmlReader,但这似乎效率低下

将XML数据映射到C#中的类

在c#中将xml映射到类中最简单的方法是使用xml序列化。.Net框架提供了您所需要的一切。问题是,您的xml需要采用rigth格式才能由反序列化程序读取。

序列化示例:

  XmlSerializer serializer = new XmlSerializer(typeof(List<Person>));
  TextWriter textWriter = new StreamWriter("people.xml");
  serializer.Serialize(textWriter, people);
  textWriter.Close();

反序列化示例

   XmlSerializer deserializer = new XmlSerializer(typeof(List<Person>));
   TextReader textReader = new StreamReader("people.xml");
   List<Person> people; 
   people= (List<Person>)deserializer.Deserialize(textReader);
   textReader.Close();

XML结果

xml应该是这样的(我没有测试它(:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Person>
    <Name>Bob</Name>
  </Person>
  <Person>
    <Name>Bill</Name>
  </Person>
</ArrayOfPerson>