`
bluedusk
  • 浏览: 272269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C#的XML序列化和反序列化1

    博客分类:
  • .Net
阅读更多

3.1 从可串行化的类中定制XML串行化
     1.格式化XML文档元素

     [XmlRoot(ElementName = " Pupil " , Namespace = " urn:MyNamespace " )]
    
public class Student
    
{
        
// 则生成XML文档中,根元素<Pupil xmlns="urn:MyNamespace">
     }

    
     2.格式化XML元素

         [XmlElement(ElementName = " FullName " , Namespace = " urn:OtherNamespace " )]
        
public string Name
        
{
            
get { return name; }
            
set { name = value; }
         }

    
         生成XML如下:

<? xml version = " 1.0 " encoding = " utf-8 " ?>
< Pupil xmlns:xsd = " http://www.w3.org/2001/XMLSchema "
        xmlns:d1p1
= " urn:OtherNamespace " >
  
< d1p1:FullName > Thomas Smith </ d1p1:FullName >     
</ Pupil >

         这里的d1p1是自动生成的,在标题4,有办法自己指定Namespace前缀。
         
     3.格式化XML属性

         [XmlAttribute(AttributeName = " StudentNumber " , Namespace = " urn:MyNamespace " )]
        
public string Name
        
{
            
get { return name; }
            
set { name = value; }
         }


         同样还是Name属性,这次是使用XmlAttribute标签,生成XML如下:

<? xml version = " 1.0 " encoding = " utf-8 " ?>
< Pupil xmlns:xsd = " http://www.w3.org/2001/XMLSchema "
        xmlns:d1p1
= " urn:OtherNamespace "
        d1p1:Name
= " Thomas Smith " >
</ Pupil >

         XML属性在空间利用率上比XML元素略高一些。
        
     4.为元素/属性设计限定的命名空间
         使用XmlSerializer的Serialize方法重载,额外带一个XmlSerializerNamespace参数,指定这个命名空间前缀

         public void SerializeIt( string filename)
        
{
            
// 自定义命名空间
             XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
             ns.Add(
" xsd " , " http://www.w3.org/2001/XMLSchema " );
             ns.Add(
" xsi " , " http://www.w3.org/2001/XMLSchema-instance " );
             ns.Add(
" otherNS " , " urn:OtherNamespace " );

             XmlSerializer serializer
= new XmlSerializer( typeof (Book));
             StreamWriter writer
= new StreamWriter(filename);
             Book myBook
= new Book();

            
// 使用Serialize重载方法
             serializer.Serialize(writer, myBook, ns);
             writer.Close();
         }


         从而生成完全自定义的XML:

<? xml version = " 1.0 " encoding = " utf-8 " ?>
< Pupil xmlns:xsd = " http://www.w3.org/2001/XMLSchema "
        xmlns:otherNS
= " urn:OtherNamespace "
         xmlns:xsi
= " http://www.w3.org/2001/XMLSchema-instance "
         otherNS:StudentNumber
= " 8007 " xmlns = " urn:MyNamespace " >
    
< otherNS:FullName > Thomas Smith </ otherNS:FullName >
</ Pupil >
分享到:
评论

相关推荐

    C#序列化与反序列化(包括复杂xml对象)

    本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将详细讲解三种方法,涵盖从XML节点获取键值对(KV值)到处理对象数组和节点标签组合的反...

    XML序列化与反序列化 实战

    总的来说,这个实战项目提供了XML序列化和反序列化的实用工具,帮助开发者更高效地处理XML数据和C#对象之间的转换。通过理解和使用提供的代码,你可以深入了解XML序列化的工作原理,并将其应用到自己的项目中。

    C# xml序列化和反序列化

    在C#编程中,XML序列化和反序列化是一项重要的技术,它允许我们将对象的状态转换为XML格式的数据,以及将XML数据恢复为等效的对象。这在数据存储、网络传输和配置文件等方面都有广泛的应用。以下是对这个主题的详细...

    C#JSon XML序列化与反序列化工具

    总结来说,理解和掌握C#中的JSON和XML序列化与反序列化是每个.NET开发者必备的技能。自制的解析工具不仅提升了工作效率,也使得数据处理更加灵活和便捷。无论是`System.Text.Json`还是Newtonsoft.Json,或是`System....

    C# 实现序列化,反序列化XML文件 各种类型 万能

    在C#中,我们可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML序列化。序列化过程通常包括以下步骤: 1. 定义要序列化的类:在类中添加`[Serializable]`属性或者使用`[XmlRoot]`、`...

    C#中Font和Color的Xml序列化

    在本文中,我们将探讨如何通过自定义方式实现Font和Color在XML序列化中的应用。 首先,让我们了解什么是Font和Color。Font对象在C#中代表了文本的外观,包括字体名称、大小、样式(如粗体、斜体)等属性。而Color...

    C# 各种序列化和反序列化

    在C#中,我们可以使用System.Xml.Serialization命名空间中的XmlSerializer类来实现XML序列化和反序列化。通过创建一个XmlSerializer实例,指定要序列化的类型,然后调用其Serialize方法,即可将对象转换为XML字符串...

    C#序列化和反序列化案例.rar

    最常用的序列化类型包括XML序列化(XmlSerializer)、JSON序列化(JavaScriptSerializer或Newtonsoft.Json库)和二进制序列化(BinaryFormatter)。在这个案例中,可能是通过BinaryFormatter或XmlSerializer将对象的...

    c#操作xml和序列化

    3. **XML序列化和反序列化**: C#提供了XmlSerializer类来实现对象到XML和XML到对象的转换。这在保存和加载对象状态时非常有用。 ```csharp [Serializable] public class MyObject { public string Name { get;...

    Xml反序列化

    1. **创建一个XML序列化类**:首先,我们需要定义一个类,该类的属性与XML文件中的元素相对应。例如,如果XML文件包含电源配置信息,可能有一个类名为`PowerConfig`,其中包含如`Voltage`、`Current`和`Frequency`等...

    xml序列化和反序列化 c#

    XML序列化和反序列化是C#编程中处理数据存储和传输的重要技术。XML(Extensible Markup Language)是一种用于标记数据的语言,具有良好的可读性和跨平台性,使其成为网络数据交换的理想选择。C#提供了内置的支持来...

    XmlDemoTranfer Xml序列化与反序列化

    `XmlSerializer`是C#中用于处理XML序列化和反序列化的关键类。要序列化一个对象,你需要创建一个`XmlSerializer`实例,指定要序列化的类型,然后调用`Serialize`方法,将对象写入一个文本流或文件。反序列化则通过...

    C#序列化和反序列化XML-读取word

    本篇将深入探讨如何使用C#进行XML序列化和反序列化,并且特别关注如何读取Word文档中的XML内容。 XML序列化是将对象的属性和字段转换为XML文档的过程,而反序列化则是相反的过程,即将XML数据转换回对象。这对于...

    C#中以PLCOpen为例子的XML序列化,反序列化的代码

    总的来说,XML序列化和反序列化是C#中处理数据交换和持久化的重要工具。它们简化了与XML格式的数据交互,并能方便地应用到PLCOpen或其他任何基于XML的规范或标准中。通过理解并熟练掌握这一技术,开发者可以更高效地...

    C#序列化和反序列化

    C#提供了多种序列化方法,其中最常见的包括BinaryFormatter、SoapFormatter和XML序列化。接下来我们将详细探讨这三种方法。 1. **BinaryFormatter**: BinaryFormatter是.NET框架中最基本的序列化工具,它将对象...

    XML序列化与反序列化整理文档(12套)

    XML(eXtensible Markup ...通过理解和熟练掌握XML序列化与反序列化,开发者可以有效地在不同的系统和组件之间传递数据,从而提升软件的灵活性和互操作性。所提供的文档和代码实例是深入学习和实践这一技术的好资源。

    C#对象序列化与反序列化

    ##### (1) XML序列化与反序列化的程序示例 同样地,这里不给出具体代码示例,但可以参考二进制序列化的示例,将`BinaryFormatter`替换为`XmlSerializer`,并相应地调整命名空间和方法调用。 #### 5. XML序列化对象...

    c#对象序列化与反序列化实例

    C#提供了`System.Xml.Serialization.XmlSerializer`类来处理XML序列化和反序列化。 ```csharp [XmlRoot("Person")] public class Person { [XmlElement("Name")] public string Name { get; set; } [XmlElement...

    C#和Java的序列化反序列化

    C#的XML序列化允许我们控制哪些字段和属性参与序列化,可以通过添加`[XmlElement]`、`[XmlAttribute]`等特性来指定。此外,C#还提供了JSON序列化库如Newtonsoft.Json(Json.NET),它在Web应用中广泛应用,支持更...

    c# 利用messagepack对类/数据进行序列化/反序列化示例

    MessagePack是一种高效的二进制序列化格式,它可以在C#中用于序列化和反序列化对象。与其他序列化格式相比,如JSON和XML,MessagePack的编码和解码速度更快,生成的二进制数据更小。在C#中使用MessagePack进行序列化...

Global site tag (gtag.js) - Google Analytics