`

关于XMLSerialization对复杂类的读和写

    博客分类:
  • C#
阅读更多
最近,为了将一个窗口内所有控件的值保存到一个XML文件中,得研究一个如何将一个类的值全部保存到一个XML文件中的例子。

于是google
http://msdn.microsoft.com/en-us/4kaaezfd(v=vs.90)
得到了这个地址,非常好,详细地给出了读写简单类的方法。

可惜,在进行复杂类的写入的时候,就是一个类内有另外一个的时候,出问题了,于是继续g
得到了 http://blog.csdn.net/menglin2010/article/details/7165553
这个例子。非常好,但是没有关于读的内容,于是,对微软的例子进行了一定的修改之后。内容如下。

学生类  student.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplication1;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
    public class student
    {
        //学生名字
        private string _name;
        [XmlElement]
        public string name
        {
            get { return _name; }
            set { _name = value; }
        }
        //学生年龄
        private string _age = "";
        [XmlElement]
        public string age
        {
            get { return _age; }
            set { _age = value; }
        }
    }
}



写出XML文件
using System;
using System.Collections.Generic;
using ConsoleApplication1;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
    [Serializable()]
    [XmlRoot]
    public class Book
    {
        public string title;
        public int page;
        public student sname;
        public Book()
        {
        }
        private static void Main()
        {
            Book introToVCS = new Book();
            introToVCS.title = "Intro to Visual CSharp";
            introToVCS.page = 26;
            introToVCS.sname = new student();
            introToVCS.sname.name = "xixi";
            introToVCS.sname.age = "15";
            System.Xml.Serialization.XmlSerializer writer =
                new System.Xml.Serialization.XmlSerializer(
                    introToVCS.GetType());
            System.IO.StreamWriter file =
                new System.IO.StreamWriter("c:\\IntroToVCS.xml");
            writer.Serialize(file, introToVCS);
            file.Close();
        }
    }
}



读入XML文件
using System;
//http://msdn.microsoft.com/en-us/4kaaezfd(v=vs.90)
using ConsoleApplication1;
public class Book
{
    public string title;
    public int page;
    public student sname;
    public Book()
    {
    }
    static void Main()
    {
        Book introToVCS = new Book();
        System.Xml.Serialization.XmlSerializer reader = new
        System.Xml.Serialization.XmlSerializer(introToVCS.GetType());
        // Read the XML file.
        System.IO.StreamReader file =
            new System.IO.StreamReader("c:\\IntroToVCS.xml");
        // Deserialize the content of the file into a Book object.
        introToVCS = (Book)reader.Deserialize(file);
        System.Windows.Forms.MessageBox.Show(introToVCS.title, "Book Title");
        System.Windows.Forms.MessageBox.Show(System.Convert.ToString(introToVCS.page), "Book PAGES");
        System.Windows.Forms.MessageBox.Show(System.Convert.ToString(introToVCS.sname.name), "NAME");
    }
}



分享到:
评论

相关推荐

    C#读取XML教程和例子(有代码)

    `XmlDocument`是.NET Framework提供的一个类,它允许我们加载XML文档并对其进行读取和修改。以下是一个简单的示例: ```csharp using System.Xml; // 加载XML文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc...

    结构体序列化读写二进制文件类

    这类技术主要用于将复杂的结构化数据转换成二进制格式,以便于高效地存储到磁盘或在网络上传输。以下是对"结构体序列化读写二进制文件类"这一主题的详细解释。 首先,结构体(Struct)是C/C++编程语言中的一个基本...

    Json和xml的数据解析

    JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛用于数据交换的格式,尤其在Web服务和应用程序之间。它们都提供了结构化的数据表示方式,但各有其特点和适用场景。 JSON是一种轻...

    XML与JSON之间转换--XMLSerializer类

    总结来说,XMLSerializer类和Json.NET库提供了在XML和JSON之间转换的强大功能。在.NET开发中,通过熟练掌握这些工具,可以灵活地处理不同数据格式之间的交互,满足各种项目需求。不过,转换时需注意数据格式的差异,...

    xml高级编程4(主页可下载其余部分)

    JSON轻量级,易于人读和机器解析,但在表示复杂结构时不如XML灵活。 以上内容只是XML高级编程的一部分,实践中还有更多主题,如XML签名、XML加密、SOAP(Simple Object Access Protocol)以及XML在网络通信、数据库...

    C#操作XML方法.zip_guardlme_xml操作_服务器

    通过这个压缩包,我们可以学习到C#对XML的各种操作技巧,包括读取、写入、解析、修改和序列化等。 首先,让我们了解C#中处理XML的基础概念。XML文档由元素、属性、文本和注释等组成,而C#提供了System.Xml命名空间...

    android XML简单序列化

    Log.d("XMLSerialization", xmlString); } catch (JsonProcessingException e) { e.printStackTrace(); } ``` 这将输出一个类似这样的XML字符串: ```xml <?xml version="1.0" encoding="UTF-8"?> <name>...

    4.Xml序列化器

    - Protobuf:Google开发的二进制序列化格式,效率高,但不如XML和JSON易读。 总之,Xml序列化器是编程中的一种重要工具,它简化了对象与XML之间的转换,方便数据交换、存储和网络通信。理解并熟练掌握Xml序列化,...

    游戏的存档与读档.zip

    在这个“游戏的存档与读档.zip”压缩包中,我们可能找到了与Unity3D游戏开发相关的素材、软件以及工程文件,它们详细讲解了如何在Unity3D环境中实现存档和读档功能。 Unity3D是一款广泛使用的跨平台游戏引擎,支持...

    VB解析Json转换为Xml

    在VB.NET中,可以使用内置的System.Web.Script.Serialization命名空间中的JavaScriptSerializer类来解析Json。以下是一个简单的步骤: 1. 引入命名空间: ```vb Imports System.Web.Script.Serialization ``` 2...

    Resource serialization and concurrency control.pdf

    DB2中还特别提到了LO块和XML锁的概念,它们分别用于优化存储过程和处理XML数据时的锁定需求。全局临时表和全局事务的锁定需求也是DB2考虑的重点。 通过了解和掌握DB2 z/OS平台下的资源序列化和并发控制,数据库管理...

    flex json解析包(corelib.swc)

    本压缩包"flex json解析包(corelib.swc)"是针对Flex应用程序的一个核心库,提供了对JSON的解析和序列化功能。 首先,我们要了解什么是SWC文件。SWC是Adobe Flex Compiler生成的库文件格式,它包含了ActionScript...

    kaml:对kotlinx.serialization的YAML支持

    通过结合Kotlinx.serialization的强大功能和YAML的易读性,kaml使得Kotlin项目中的数据管理变得更加高效和便捷。 总之,kaml是Kotlin开发者处理YAML数据的得力助手,它简化了序列化和反序列化的流程,提升了代码的...

    JsonXmlConvert.zip_JSON_Json Convert c#

    要进行XML到JSON的转换,我们可以使用C#的System.Xml.Serialization命名空间中的类。首先,我们需要将XML字符串解析为一个XmlDocument对象,然后使用JsonConvert类的SerializeXmlNode方法将这个XML节点转换为JSON...

    C#知识库

    此外,对于更复杂的转换,如XML与JSON之间的转换,可以使用System.Xml.Serialization或Newtonsoft.Json库。 2. **资源管理**: C#提供了自动垃圾回收机制来管理内存,但开发者仍然需要关注资源的释放,如数据库...

    KSOAP-J2ME-MIDP-JAVADOC

    - **版本信息**:对于更新和维护,JAVADOC会提供关于库版本的信息,有助于追踪变化和兼容性问题。 **4. 压缩包文件内容详解:** - **stylesheet.css**:样式表文件,用于格式化JAVADOC文档的HTML输出,使其更易读。...

    序列化与反序列化

    在C#中,我们可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现这一过程。以下是一个简单的例子: ```csharp public class People { [XmlAttribute("NAME")] public string Name { set; ...

    序列化示例代码

    在.NET中,可以使用`System.Xml.Serialization.XmlSerializer`类进行XML序列化和反序列化。Java中,可以使用`javax.xml.bind.JAXB`或`org.xmlpull.v1.XmlPullParser`来实现相同的目标。XML序列化通常会产生更冗长的...

    C#344-对象串行化源代码

    4. **XmlSerializer**: 这个类将对象转换为XML格式,易于阅读和理解,同时也支持跨平台。如果需要与Web服务交互或保存人类可读的数据,XmlSerializer是很好的选择。 5. **DataContractSerializer和JsonSerializer**...

    Visual Basic.NET 串行化参考手册

    - `BinaryFormatter` 类在`System.Runtime.Serialization.Formatters.Binary`命名空间中,用于创建二进制格式的序列化数据,这种格式更紧凑,但不如XML易读。 - `DataContractSerializer` 和 `...

Global site tag (gtag.js) - Google Analytics