如何使序列化数据紧凑?

时间:2019-05-03 10:03:56

标签: c# serialization .net-core

我写了一个应用程序,它是一个自定义控制台,允许执行各种命令。命令之一允许数据序列化。输入数据是一个字符串,它是用逗号分隔的值的列表。

我的问题是-如何使序列化数据尽可能紧凑? 序列化格式对我来说并不重要。

这是命令的代码:

using CustomConsole.Common;
using System.IO;
using System.Xml.Serialization;
using System;

namespace Shell_Commander.Commands
{
    public class SerializeCommand : ICommand
    {
        private string _serializeCommandName = "serialize";
        public string Name { get { return this._serializeCommandName; } set { _serializeCommandName = value; } }

        public string Execute(string parameters)
        {
            try
            {
                var splittedParameters = parameters.Split(" ");
                var dataToSerialize = splittedParameters[0].Split(",");
                var pathTofile = splittedParameters[1].Replace(@"\", @"\\");

                XmlSerializer serializer = new XmlSerializer(dataToSerialize.GetType());
                using (StreamWriter writer = new StreamWriter(pathTofile))
                {
                    serializer.Serialize(writer, dataToSerialize);
                    var length = new FileInfo(pathTofile).Length;

                    Console.WriteLine($"Wrote file to: {pathTofile}");
                    return length.ToString();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return "0";
            }
        }
    }
}

该命令接受2个参数:

  1. 要序列化的数据
  2. 文件路径(为了保存序列化的数据)。

示例-对于“ 1,2,4”输入,将保存以下文件:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <string>1</string>
  <string>2</string>
  <string>4</string>
</ArrayOfString> 

编辑:

  1. 我希望我的命令将来能够对复杂的对象进行序列化,因此将字符串原样写入文件不是解决方案。

  2. 我只想使用标准的序列化方法和格式。

0 个答案:

没有答案