Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将原语列表序列化为具有覆盖的XML_C#_Xml Serialization - Fatal编程技术网

C# 将原语列表序列化为具有覆盖的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()) {

我试图将一个整数数组序列化为XML,但是我不能让输出看起来像我想要的那样。我需要找到某种方法来覆盖数组中每个元素的元素名。
到目前为止,我掌握的代码是:

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”属性,您可以设置。是的,我可以,但它不是。它只是一个直接的数组/列表(我可以使用任何一个),需要以这种方式序列化。我还希望能够将该解决方案用于其他类型的数组,并在运行时确定类型。