首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# XmlSerializer具有多种属性设置的对象

C# XmlSerializer具有多种属性设置的对象
EN

Stack Overflow用户
提问于 2018-10-17 06:55:01
回答 1查看 45关注 0票数 1

我有这样的类定义

代码语言:javascript
复制
public class ScenarioModel {
    public string Version { get; set; }
}

我想将这个类的一个实例序列化为2个不同格式的XML文件。

(使用System.Xml.Serialization.XmlSerializer)

档案1:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Scenario>
    <Version>1.0.0</Vesion>
</Scenario>

档案2:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Scenario version="1.0.0">
</Scenario>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 08:00:34

型号:

代码语言:javascript
复制
[XmlRoot("Scenario")]
public class ScenarioModel
{
    public string Version { get; set; }
}

Program.cs:

代码语言:javascript
复制
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();
}

应该给你这样的东西:

代码语言:javascript
复制
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" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52848929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档