c# - 我将如何在 C# 中为我的类实现以下 XmlSerializer 更改?

标签 c# .net xml xml-serialization xmlserializer

我想生成以下 XML:

<Base>
    <Child>
        <Name>Joe</Name>
    </Child>
    <Child>
        <Name>Jack</Name>
    </Child>
</Base>

来自类(class):

public class Base
{
    public List<Child> children;
    ...elided...
}

public class Child
{
    public string Name;
    ...elided...
}

现在,它正在创建:

<Base>
    <children>
        <Child>
            <Name>Joe</Name>
        </Child>
        <Child>
            <Name>Jack</Name>
        </Child>
    </children>
</Base>

我将如何更改以产生所需的输出?

我当前的代码:

XmlSerializer serializer = new XmlSerializer(base.GetType());
serializer.serialze(stringWriter, base);
return stringWriter.ToString();

最佳答案

使用 XmlElementAttribute

public class Base
{
    [XmlElement(ElementName = "Child")]
    public List<Child> children;
}

...完整示例...

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

class Program
{
    static void Main()
    {
        var xsr = new XmlSerializer(typeof(Base));

        var b = new Base
        {
            children = new List<Child>
                {
                    new Child { Name= "Joe"},
                    new Child { Name ="Jack"},
                }
        };
        using (var ms = new MemoryStream())
        {
            xsr.Serialize(ms, b);

            var str = Encoding.UTF8.GetString(ms.ToArray());
            /*
            <?xml version="1.0"?>
            <Base xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <Child>
                <Name>Joe</Name>
              </Child>
              <Child>
                <Name>Jack</Name>
              </Child>
            </Base>
             */
        }
    }
}

public class Base
{
    [XmlElement("Child")]
    public List<Child> children;
}

public class Child
{
    public string Name;
}

关于c# - 我将如何在 C# 中为我的类实现以下 XmlSerializer 更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770503/

相关文章:

c# - 如何使用正则表达式从字符串中获取 ID

java - Apache Commons 配置基于父级获取属性,属性等于值

android - match_parent 不工作 xml android

c# 并非所有代码路径都返回值错误

c# - 给 Sprite 添加力量

c# - WPF - 因值更改而触发的常见事件

c# - XElement 和 XDocument 有什么区别?

c# - 如何通过 webapi2 将扁平化列表返回给 breezejs?

.net - Visual Studio 解决方案项目引用或 Dll 引用

.net - 在任务并行库 : How to defer Task. TaskFactory.FromAsync 任务执行?