C# XmlSerializer 一个具有多种属性设置方式的对象
C# XmlSerializer an object with various ways attributes setting
我有这样的 class 定义
public class ScenarioModel {
public string Version { get; set; }
}
我想将此 class 的一个实例序列化为 2 个不同格式的 XML 文件。
(使用 System.Xml.Serialization.XmlSerializer
)
文件 1:
<?xml version="1.0" encoding="utf-8"?>
<Scenario>
<Version>1.0.0</Vesion>
</Scenario>
文件 2:
<?xml version="1.0" encoding="utf-8"?>
<Scenario version="1.0.0">
</Scenario>
如何设置我的 ScenarioModel
class 定义。
型号:
[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" />
我有这样的 class 定义
public class ScenarioModel {
public string Version { get; set; }
}
我想将此 class 的一个实例序列化为 2 个不同格式的 XML 文件。
(使用 System.Xml.Serialization.XmlSerializer
)
文件 1:
<?xml version="1.0" encoding="utf-8"?>
<Scenario>
<Version>1.0.0</Vesion>
</Scenario>
文件 2:
<?xml version="1.0" encoding="utf-8"?>
<Scenario version="1.0.0">
</Scenario>
如何设置我的 ScenarioModel
class 定义。
型号:
[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" />