Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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#XmlSerializer一个具有各种属性设置方式的对象_C#_Xmlserializer - Fatal编程技术网

C#XmlSerializer一个具有各种属性设置方式的对象

C#XmlSerializer一个具有各种属性设置方式的对象,c#,xmlserializer,C#,Xmlserializer,我有一个这样的类定义 public class ScenarioModel { public string Version { get; set; } } 我想将此类的一个实例序列化为2个不同格式的XML文件。 (使用System.Xml.Serialization.XmlSerializer) 文件1: <?xml version="1.0" encoding="utf-8"?> <Scenario> <Version>1.0.0</

我有一个这样的类定义

public class ScenarioModel {
    public string Version { get; set; }
}
我想将此类的一个实例序列化为2个不同格式的XML文件。
(使用
System.Xml.Serialization.XmlSerializer

文件1:

<?xml version="1.0" encoding="utf-8"?>
<Scenario>
    <Version>1.0.0</Vesion>
</Scenario>

1.0.0
文件2:

<?xml version="1.0" encoding="utf-8"?>
<Scenario version="1.0.0">
</Scenario>

如何为我的
ScenarioModel
类定义进行设置。

模型:

[XmlRoot("Scenario")]
public class ScenarioModel
{
    public string Version { get; set; }
}
Program.cs:

static void Main(string[] args)
{
    ScenarioModel model = new ScenarioModel { Version = "1.0.0" };

    XmlSerializer ser = null;
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add(string.Empty, string.Empty);

    Console.WriteLine("File 1\n==================");
    ser = new XmlSerializer(model.GetType());
    ser.Serialize(Console.Out, model, ns);

    Console.WriteLine("\n\nFile 2\n==================");
    XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides();
    XmlAttributes attr = new XmlAttributes { XmlAttribute = new XmlAttributeAttribute("Version") };
    attrOverrides.Add(model.GetType(), "Version", attr);
    ser = new XmlSerializer(model.GetType(), attrOverrides);
    ser.Serialize(Console.Out, model, ns);

    Console.WriteLine();
    Console.ReadLine();
}
应该给你一些类似的东西:

File 1
==================
<?xml version="1.0" encoding="utf-8"?>
<Scenario>
  <Version>1.0.0</Version>
</Scenario>

File 2
==================
<?xml version="1.0" encoding="utf-8"?>
<Scenario Version="1.0.0" />
文件1
==================
1.0.0
文件2
==================

感谢您的解决方案。很抱歉打扰您,我还有一个问题,我的团队希望使用
.xsd
文件来描述XML格式,而不是在
ScenarioModel.cs
文件中进行设置。“可能吗?”安兹瓦尼很高兴听到这个消息。但是说到
.xsd
文件,我不熟悉它:(