Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
如何从XML文件创建可序列化的C#类_C#_.net_Object_Xml Serialization - Fatal编程技术网

如何从XML文件创建可序列化的C#类

如何从XML文件创建可序列化的C#类,c#,.net,object,xml-serialization,C#,.net,Object,Xml Serialization,我对.net中的XML相当陌生。作为任务的一部分,我需要创建可以序列化为XML的类。我有一个包含所有标记的示例XML文件(该类应该生成与示例XML文件类似的XML)。从XML文件创建类的最佳方法是什么 提前谢谢你 下面是一个如何序列化/反序列化对象的好例子 可以使用XSD.exe从.xml创建.cs文件。 在命令行中: xsd myFile.xml xsd myFile.xsd 第一行将生成一个模式定义文件(xsd),第二行将生成一个.cs文件。我不确定语法是否准确,但它应该让您开始学习。反

我对.net中的XML相当陌生。作为任务的一部分,我需要创建可以序列化为XML的类。我有一个包含所有标记的示例XML文件(该类应该生成与示例XML文件类似的XML)。从XML文件创建类的最佳方法是什么


提前谢谢你

下面是一个如何序列化/反序列化对象的好例子

可以使用XSD.exe从.xml创建.cs文件。

在命令行中:

xsd myFile.xml
xsd myFile.xsd

第一行将生成一个模式定义文件(xsd),第二行将生成一个.cs文件。我不确定语法是否准确,但它应该让您开始学习。

反向工作可能会有所帮助——首先创建类,然后序列化并查看结果

对于最简单的类,它实际上相当简单。您可以使用XmlSerializer进行序列化,如:

namespace ConsoleApplication1 { public class MyClass { public string SomeProperty { get; set; } } class Program { static void Main(string[] args) { XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); TextWriter writer = new StreamWriter(@"c:\temp\class.xml"); MyClass firstInstance = new MyClass(); firstInstance.SomeProperty = "foo"; // etc serializer.Serialize(writer, firstInstance); writer.Close(); FileStream reader = new FileStream(@"c:\temp\class.xml", FileMode.Open); MyClass secondInstance = (MyClass)serializer.Deserialize(reader); reader.Close(); } } } 命名空间控制台应用程序1 { 公共类MyClass { 公共字符串属性 { 得到; 设置 } } 班级计划 { 静态void Main(字符串[]参数) { XmlSerializer serializer=新的XmlSerializer(typeof(MyClass)); TextWriter writer=newstreamwriter(@“c:\temp\class.xml”); MyClass firstInstance=新建MyClass(); firstInstance.SomeProperty=“foo”//等 serializer.Serialize(writer,firstInstance); writer.Close(); FileStream reader=newfilestream(@“c:\temp\class.xml”,FileMode.Open); MyClass secondInstance=(MyClass)序列化程序。反序列化(读取器); reader.Close(); } } } 这将用XML将类的序列化表示形式写入“c:\temp\class.XML”。你可以看看你得到了什么。相反,您可以使用serializer.Deserialize从“c:\temp\class.xml”实例化类


您可以修改he序列化的行为,处理意外的节点,等等--例如,看一看。

47秒对我来说太快了+1.我可以补充一下,
/c
将是正确的输出格式吗?@Grasshopper询问的是类生成,而不是序列化。这并没有解决这个问题。我想你可能错了--“创建可以序列化为XML的类”。实际的要求有点模糊。我的错是,我在凌晨3点睡觉前发布了答案:)@Tim-我要学究气了:)“创建类”不同于“创建对象”。@Greg--heh,够公平了:)虽然我认为如果你要学究气,也许我们应该开始讨论生成,定义和实例化,而不是创建。也许有一个好问题在那里,或者在社区维基上。你对任何建议的方法有任何运气吗?是的!。我成功地使用xsd工具生成了这个类(我不得不对它们进行一些更改以满足我的需求)。