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

发布于 2024-10-05 22:38:02 字数 138 浏览 5 评论 0原文

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

先感谢您!!

I am fairly new to XML in .net. As part of my task i need to create the class which can be serialized to XML. I have an sample XML file with all the tags(the class should produce XML similar to the sample XML file ). what would be best approach to create the class from XML file?

Thank you in advance!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

等待圉鍢 2024-10-12 22:38:02

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

在命令行:

xsd myFile.xml
xsd myFile.xsd

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

You can use XSD.exe to create a .cs file from .xml.
http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx

At the command line:

xsd myFile.xml
xsd myFile.xsd

The first line will generate a schema definition file (xsd), the second file should generate a .cs file. I'm not sure if the syntax is exact, but it should get you started.

街角迷惘 2024-10-12 22:38:02

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

对于最简单的类来说,这实际上很容易。您可以使用 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();
        }
    }
}

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

您可以修改序列化的行为,并处理意外的节点等 - 请查看 XmlSerializer MSDN 页面

Working backwards might help -- create your class first, then serialize and see what you get.

For the simplest classes it's actually quite easy. You can use XmlSerializer to serialize, like:

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();
        }
    }
}

This will write a serialized representation of your class in XML to "c:\temp\class.xml". You could take a look and see what you get. In reverse, you can use serializer.Deserialize to instantiate the class from "c:\temp\class.xml".

You can modify the behaviour of he serialization, and deal with unexpected nodes, etc -- take a look at the XmlSerializer MSDN page for example.

完美的未来在梦里 2024-10-12 22:38:02

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

here's a good example how to serialize/deserialize an object. http://sharpertutorials.com/serialization/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文