その形式に固定されていない場合は、ジャグ配列と XmlSerializer を使用できます。
double[][][] d = new double[][][] { new double[][] {
new double[] {1.0, 2.0, 3.0},
new double[] {4.0, 5.0, 6.0},
new double[] {7.0, 8.0, 9.0}
},
new double[][] {
new double[] {10.0, 11.0, 12.0},
new double[] {13.0, 14.0, 15.0},
new double[] {16.0, 17.0, 18.0}
},
new double[][] {
new double[] {19.0, 20.0, 21.0},
new double[] {22.0, 23.0, 24.0},
new double[] {25.0, 26.0 ,27.0}
}
};
XmlSerializer x = new XmlSerializer(typeof(double[][][]));
using (StringWriter sw = new StringWriter())
{
x.Serialize(sw, d);
Console.WriteLine(sw.ToString());
}
これにより、次の XML が生成されます。
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfArrayOfArrayOfDouble xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ArrayOfArrayOfDouble>
<ArrayOfDouble>
<double>1</double>
<double>2</double>
<double>3</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>4</double>
<double>5</double>
<double>6</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>7</double>
<double>8</double>
<double>9</double>
</ArrayOfDouble>
</ArrayOfArrayOfDouble>
<ArrayOfArrayOfDouble>
<ArrayOfDouble>
<double>10</double>
<double>11</double>
<double>12</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>13</double>
<double>14</double>
<double>15</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>16</double>
<double>17</double>
<double>18</double>
</ArrayOfDouble>
</ArrayOfArrayOfDouble>
<ArrayOfArrayOfDouble>
<ArrayOfDouble>
<double>19</double>
<double>20</double>
<double>21</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>22</double>
<double>23</double>
<double>24</double>
</ArrayOfDouble>
<ArrayOfDouble>
<double>25</double>
<double>26</double>
<double>27</double>
</ArrayOfDouble>
</ArrayOfArrayOfDouble>
</ArrayOfArrayOfArrayOfDouble>