我试图在序列化 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/