Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中将XML数据映射到类#_C#_Xml_Mapping - Fatal编程技术网

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

C# 在C中将XML数据映射到类#,c#,xml,mapping,C#,Xml,Mapping,如果我有一个外部XML提要和一个内部类,那么自动读取提要并将数据映射到类的新实例的最佳方法是什么 因此,如果xml提要是 <people> <person> <name>Bob</name> </person> <person> <name>Bill</name> </person> </people> 上下快速移动 比尔

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

因此,如果xml提要是

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

上下快速移动
比尔

我的类Person有一个属性名。现在我正在逐步使用XmlReader,但这似乎效率低下。在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 serializer=新的XmlSerializer(typeof(List));
TextWriter=newstreamwriter(“people.xml”);
序列化程序。序列化(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();
XmlSerializer反序列化器=新的XmlSerializer(typeof(List));
TextReader=newstreamreader(“people.xml”);
列出人员名单;
人员=(列表)反序列化程序。反序列化(文本阅读器);
textReader.Close();
XML结果

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


上下快速移动
比尔

我熟悉序列化,但我无法控制XML提要的格式如果您“无法控制”源格式,那么您必须自己解析提要。其他任何事情都是鲁莽的。XmlReader非常适合这样做。您当前的实现在哪方面“效率低下”?性能/代码?
<?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>