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