直接上代码:

 public static class XmlSerializer
{
public static void SaveToXml(string filePath, object sourceObj, Type type)
{
if (!string.IsNullOrWhiteSpace(filePath) && sourceObj != null)
{
type = type != null ? type : sourceObj.GetType(); using (StreamWriter writer = new StreamWriter(filePath))
{
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces(); nameSpace.Add("", ""); //not ot output the default namespace
xmlSerializer.Serialize(writer, sourceObj, nameSpace);
}
}
} public static object LoadFromXml(string filePath, Type type)
{
object result = null; if (File.Exists(filePath))
{
using (StreamReader reader = new StreamReader(filePath))
{
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
result = xmlSerializer.Deserialize(reader);
}
}
return result;
}
 
模型类,要序列化的数据结构:
 //[XmlRoot("sequence")]
public class Sequence
{
//[XmlAttribute("id")]
public string Id { get; set; } // [XmlElement("media")]
public Media Media { get; set; } public Sequence()
{
Id = "序列2";
Media = new Media();
} } //[XmlRoot("media")]
public class Media
{
// [XmlAttribute("id")]
public string Id { get; set; } //[XmlElement("video")]
public Video Video { get; set; } // [XmlElement("audio")]
public Audio Audio { get; set; } public Media()
{
Id = "media one";
Video = new Video();
Audio = new Audio();
}
} public class Video
{
public string name { get; set; } public Video()
{
name = "video 12";
}
} public class Audio
{
public string name { get; set; } public Audio()
{
name = "video 12";
}
}

实际使用:

class Program
{
static void Main(string[] args)
{
Sequence model = new Sequence(); XmlSerializer.SaveToXml("text.xml", model, model.GetType());
}
}

结果:

<?xml version="1.0" encoding="utf-8"?>
<Sequence>
<Id>序列2</Id>
<Media>
<Id>media one</Id>
<Video>
<name>video 12</name>
</Video>
<Audio>
<name>video 12</name>
</Audio>
</Media>
</Sequence>

【C#】使用C#将类序列化为XML的更多相关文章

  1. C#实体类序列化为XML

    这两天,应要求做一个C/S的小程序,考虑到程序简洁小巧,存数据的方式不使用数据库,而是直接存入XML文档中保存.为了把复杂实体类里面的属性存入XML,我们可以使用C#有的反射机制,做一个简单的通用工具 ...

  2. 序列化为XML

    java类序列化成xml 方法[转] 今天看了下JAVA序列化.还是一知半解.怎么也没有弄明白,怎么序列化成XML文件.处入半解状态.在网上找了很多,大部分是理论上的.没有实际的例子.功夫不负有心人, ...

  3. 匿名对象序列化为XML

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...

  4. java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例

    package org.rui.io.xml; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import ...

  5. asp.net webapi 序列化为xml 时实体属性增加<![CDATA[]]>防止特殊字符

    有时webapi在序列化xml时,可能需要给某些带有html或特殊字符(如 < > & /)的字段加上<![CDATA[]]> 已防止影响xml正常数据,如果使用.as ...

  6. 通用类 对象和XML互转

    public class XMLHealper { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <para ...

  7. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

  8. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  9. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

随机推荐

  1. Appium输入中文的问题,简单的方法

    经常有人问,Appium怎么输入中文,下面提供一种相对简单的方式. 以前曾经提到过capabilities关键字,里面有这样2个属性, |`unicodeKeyboard`| 使用 Unicode 输 ...

  2. Ant 脚本打印系统属性变量、ant内置属性

    Ant 脚本打印系统属性变量.ant内置属性 作用 编写ant脚本的时候,经常会引用到系统属性,本脚本用于打印系统常用属性(System.getProperties)与环境变量(Environment ...

  3. 酷我音乐API

    今天把酷我音乐API分享给大家: 歌曲搜索API:http://search.kuwo.cn/r.s?all={0}&ft=music& itemset=web_2013&cl ...

  4. css显示出三角形

    其实非常简单,就是设置一个div 让div的宽度和高度都设置为0, 然后为div设置一个border 因为角部位,比如我设置border-left和border-top 角部分是各自占用一半, 所以当 ...

  5. 企业内网信息安全实践-记ChinaUnix技术交流

    企业内网信息安全实践 随着棱镜计划的曝光,越来越多的信息安全的事件暴露在公众面前.对于企业来说,遭受到黑客攻击和破坏是家常便饭,只是您没有觉察到.自从09年就开始研究Ossim0.9版本,历经进10个 ...

  6. Windows API——CREATEEVENT——创建事件

    事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象.事件告诉线程何时去执行某一给定的任务,从而使多个线程流平滑 CreateEvent是创建windows事件的意思,作用主要用在判断线 ...

  7. qq 登录 cordova插件

    1.下载open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下这个链接 很容易的把环境配置好http://wiki.connect.qq.com/%E5% ...

  8. ionic localstorage

    angular.module('locals',[]) .factory('ls', ['$window', function($window) { return { set: function(ke ...

  9. seafile

    ./setup-seafile-mysql.shChecking python on this machine ...  Checking python module: setuptools ... ...

  10. Android IOS WebRTC 音视频开发总结(三六)-- easyRTC介绍

    本文主要介绍easyRTC,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 先看看人家官网的介绍,然后再来解释,这样您可能更容易理解: 以下部分内容属个人看法,如有异议,欢迎探讨: ...