Это возможно обоими способами (с помощью оболочки и определения атрибута XmlRoot
или добавления XmlAttributeOverrides
в сериализатор).
Я реализовал это вторым способом:
вот массив целых чисел, я использую XmlSerializer
для его сериализации:
int[] array = { 1, 5, 7, 9, 13 };
using (StringWriter writer = new StringWriter())
{
XmlAttributes attributes = new XmlAttributes();
attributes.XmlRoot = new XmlRootAttribute("ints");
XmlAttributeOverrides attributeOverrides = new XmlAttributeOverrides();
attributeOverrides.Add(typeof(int[]), attributes);
XmlSerializer serializer = new XmlSerializer(
typeof(int[]),
attributeOverrides
);
serializer.Serialize(writer, array);
string data = writer.ToString();
}
переменная данных (которая содержит сериализованный массив):
<?xml version="1.0" encoding="utf-16"?>
<ints xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<int>1</int>
<int>5</int>
<int>7</int>
<int>9</int>
<int>13</int>
</ints>
Итак, вместо ArrayOfInt
мы получили ints
в качестве корневого имени.
Подробнее о конструкторе XmlSerializer
, который я использовал, можно найти здесь .