Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用Object&;XMLSerializer_C#_Xml_Serialization - Fatal编程技术网

C#使用Object&;XMLSerializer

C#使用Object&;XMLSerializer,c#,xml,serialization,C#,Xml,Serialization,我有以下将对象输出到XML文件的代码: using System; using System.IO; using System.Collections.Generic; using System.Reflection; using System.Xml; using System.Xml.Serialization; namespace TrailBlazerReloaded { public class Config { Config config = nul

我有以下将对象输出到XML文件的代码:

using System;
using System.IO;
using System.Collections.Generic;
using System.Reflection;
using System.Xml;
using System.Xml.Serialization;

namespace TrailBlazerReloaded
{
    public class Config
    {
        Config config = null;
        XmlSerializer serializer = new XmlSerializer(typeof(Config));

        public Config()
        {
            CollectionPaths = null;
            Definitions = null;
            TrailerPath = null;
        }

        public string Version { get; set; }

        public string[] CollectionPaths { get; set; }

        public string[] Definitions { get; set; }

        public string[] TrailerPath { get; set; }

        public void WriteConfig(Config configToSave)
        {
            serializer = new XmlSerializer(typeof(Config));
            TextWriter textWriter = new StreamWriter(@"config.xml");
            serializer.Serialize(textWriter, configToSave);
            textWriter.Close();
        }

        public Config ReadConfig()
        {
            if (File.Exists(@"Config.xml"))
            {
                var reader = new StreamReader("Config.xml");
                config = (Config) serializer.Deserialize(reader);
                reader.Close();
            }

            return config;
        }

        public static string GetConfigFilePath()
        {
            return Assembly.GetExecutingAssembly().Location + ".config";
        }

    }
}
它返回以下结果:

<?xml version="1.0" encoding="utf-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>0.0.1</Version>
  <CollectionPaths>
    <string>F:\Trailblazer Test Folder 1</string>
    <string>F:\Trailblazer Test Folder 2</string>
    <string>F:\Trailblazer Test Folder 3 (100 Films)</string>
  </CollectionPaths>
  <Definitions>
    <string>1080p</string>
    <string>720p</string>
    <string>480p</string>
  </Definitions>
  <TrailerPath>
    <string>C:\</string>
  </TrailerPath>
</Config>

0.0.1
F:\Trailblazer测试文件夹1
F:\Trailblazer测试文件夹2
F:\Trailblazer测试文件夹3(100部影片)
1080p
720便士
480便士
C:\
但是,我希望输出在每个定义标记项上包含一个属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>0.0.1</Version>
  <CollectionPaths>
    <string>F:\Trailblazer Test Folder 1</string>
    <string>F:\Trailblazer Test Folder 2</string>
    <string>F:\Trailblazer Test Folder 3 (100 Films)</string>
  </CollectionPaths>
  <Definitions>
    <string active="true">1080p</string>
    <string active="false">720p</string>
    <string active="true">480p</string>
  </Definitions>
  <TrailerPath>
    <string>C:\</string>
  </TrailerPath>
</Config>

0.0.1
F:\Trailblazer测试文件夹1
F:\Trailblazer测试文件夹2
F:\Trailblazer测试文件夹3(100部影片)
1080p
720便士
480便士
C:\

有什么想法吗?:)

您必须使用自定义类型而不是字符串

public class Definition
{
    [XmlAttribute("active")]
    public bool Active;

    [XmlText]
    public string Text;
}
然后定义
定义
属性,如下所示

[XmleElement("string")]
public Definition[] Definitions { get; set; }