c# - 摆脱 C# XML 序列化中的数组名称

标签 c# xml serialization

我试图在序列化 XML 时得到这个结果:

<Root Name="blah">
  <SomeKey>Eldad</SomeKey>
  <Element>1</Element>
  <Element>2</Element>
  <Element>3</Element>
  <Element>4</Element>
</root>

或者换句话说 - 我试图在“根”元素中包含一个数组,以及其他键。

这是我粗略的尝试:

[XmlRootAttribute(ElementName="Root", IsNullable=false)]
public class RootNode
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    public string SomeKey { get; set; }

    [XmlArrayItem("Element")]
    public List<int> Elements { get; set; }
}

还有我的连载:

string result;
XmlSerializer serializer = new XmlSerializer(root.GetType());
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
    serializer.Serialize(sw, root);
    result = sw.ToString();
}

但是,这是我的结果(为清楚起见删除了命名空间):

<Root>
  <SomeKey>Eldad</SomeKey>
  <Elements>
    <Element>1</Element>
    <Element>2</Element>
    <Element>3</Element>
  </Elements>
</Root>

有什么方法可以删除“元素”部分吗?

最佳答案

在数组上使用 XmlElement 属性,这将指示序列化程序将数组项序列化为当前元素的子元素,而不为数组创建新的根元素。

[XmlRootAttribute(ElementName="Root", IsNullable=false)] 
public class RootNode 
{ 
    [XmlAttribute("Name")] 
    public string Name { get; set; } 

    public string SomeKey { get; set; } 

    [XmlElement("Element")] 
    public List<int> Elements { get; set; } 
} 

关于c# - 摆脱 C# XML 序列化中的数组名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650831/

相关文章:

c# - 是否可以在 C# 中反序列化已在 C++ MFC 中二进制序列化的对象?

c# - 全屏应用程序 WM6 C#

java - 菜单项出现 NullPointerException

java - Java中删除XML文件中的节点

android - 如何在约束布局中链接组?

c# - 创建一个可序列化的类 - 复杂对象

c# - HtmlAgilityPack 不返回 div 内的文本

c# - 在复杂/单窗口 WPF 应用程序中使用 Thread 的最佳方式

c# - 前台和后台线程的用例

VB/VBA 中的 XML 反序列化