【问题标题】:How create a serializable C# class from XML file如何从 XML 文件创建可序列化的 C# 类
【发布时间】:2010-12-02 23:06:24
【问题描述】:

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

提前谢谢你!!

【问题讨论】:

  • 您对任何建议的方法有任何帮助吗?
  • 是的!我成功地使用 xsd 工具生成了类(我必须对它们进行一些更改以满足我的要求)。

标签: c# .net object xml-serialization


【解决方案1】:

您可以使用 XSD.exe 从 .xml 创建一个 .cs 文件。 http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx

在命令行:

xsd myFile.xml
xsd myFile.xsd

第一行将生成一个架构定义文件 (xsd),第二个文件应该生成一个 .cs 文件。我不确定语法是否准确,但它应该可以帮助您入门。

【讨论】:

  • 47 秒对我来说太快了。 +1。我可以添加 /c 是正确的输出格式吗?
【解决方案2】:

向后工作可能会有所帮助——首先创建你的类,然后序列化,看看你得到了什么。

对于最简单的类,它实际上很容易。可以使用 XmlSerializer 进行序列化,比如:

命名空间 ConsoleApplication1 { 公共课 MyClass { 公共字符串 SomeProperty { 得到; 放; } } 课堂节目 { 静态无效主要(字符串 [] 参数) { XmlSerializer 序列化器 = 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(); } } }

这会将您的类在 XML 中的序列化表示形式写入“c:\temp\class.xml”。你可以看看,看看你得到了什么。相反,您可以使用 serializer.Deserialize 从“c:\temp\class.xml”实例化类。

您可以修改序列化的行为,处理意外节点等——例如看看the XmlSerializer MSDN page

【讨论】:

    【解决方案3】:

    这是一个如何序列化/反序列化对象的好例子。 http://sharpertutorials.com/serialization/

    【讨论】:

    • @Grasshopper 询问的是类生成,而不是序列化。这并没有解决问题。
    • 我认为你可能错了——“创建可以序列化为 XML 的类”。实际要求有点模糊。
    • 我的错,我在凌晨 3 点在睡觉前发布了答案 :)
    • @Tim - 我要学究气了 :) “创建类”与“创建对象”不同。
    • @Greg -- 呵呵,够公平的 :) 虽然我认为如果你要学究气,也许我们应该开始讨论生成、定义和实例化,而不是创建。也许那里或社区 wiki 中有一个很好的问题。
    猜你喜欢
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多