C# 将原语列表序列化为具有覆盖的XML
我试图将一个整数数组序列化为XML,但是我不能让输出看起来像我想要的那样。我需要找到某种方法来覆盖数组中每个元素的元素名。C# 将原语列表序列化为具有覆盖的XML,c#,xml-serialization,C#,Xml Serialization,我试图将一个整数数组序列化为XML,但是我不能让输出看起来像我想要的那样。我需要找到某种方法来覆盖数组中每个元素的元素名。 到目前为止,我掌握的代码是: var numbers = new int[]{1, 2, 3, 4, 5}; var serializer = new XmlSerializer(typeof(int[]), new XmlRootAttribute("rows")); using (var stringWriter = new StringWriter()) {
到目前为止,我掌握的代码是:
var numbers = new int[]{1, 2, 3, 4, 5};
var serializer = new XmlSerializer(typeof(int[]), new XmlRootAttribute("rows"));
using (var stringWriter = new StringWriter())
{
serializer.Serialize(stringWriter, numbers);
Console.Write(stringWriter.ToString());
}
我所追求的输出:
<?xml version="1.0" encoding="utf-16"?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<row>1</row>
<row>2</row>
<row>3</row>
<row>4</row>
<row>5</row>
</rows>
1.
2.
3.
4.
5.
我看到的电流输出:
<?xml version="1.0" encoding="utf-16"?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>1</int>
<int>2</int>
<int>3</int>
<int>4</int>
<int>5</int>
</rows>
1.
2.
3.
4.
5.
您可以创建一个单独的类来保存您的值,并且可以按如下方式指定Xml属性:
[Serializable]
[XmlRoot("rows")]
public class Rows
{
[XmlElement("row")]
public List<int> Elements { get; set; }
}
public static void SerializeOnScreen()
{
Rows numbers = new Rows();
numbers.Elements = new List<int>() { 1, 2, 3, 4, 5 };
var serializer = new XmlSerializer(typeof(Rows));
using (var stringWriter = new StringWriter())
{
serializer.Serialize(stringWriter, numbers);
Console.Write(stringWriter.ToString());
}
}
[可序列化]
[XmlRoot(“行”)]
公共类行
{
[XmlElement(“行”)]
公共列表元素{get;set;}
}
屏幕上的公共静态无效序列化()
{
行数=新行();
元素=新列表(){1,2,3,4,5};
var serializer=新的XmlSerializer(typeof(Rows));
使用(var stringWriter=new stringWriter())
{
序列化器。序列化(stringWriter,数字);
Console.Write(stringWriter.ToString());
}
}
如果int[]在类/结构中,则可以使用XmlArrayAttribute和XmlArrayItemAttribute。它有“ElementName”属性,您可以设置。是的,我可以,但它不是。它只是一个直接的数组/列表(我可以使用任何一个),需要以这种方式序列化。我还希望能够将该解决方案用于其他类型的数组,并在运行时确定类型。