将xml行加载到2D数组中

时间:2014-01-31 20:55:19

标签: c# xml wpf arrays

所以我有这个xml

<document>
  <Month>
    <Depth>-0,25</Depth>
    <October>0,95</October>
    <November>-0,90</November>
    ...
  </Month>
  <Month>
    <Depth>-0,5</Depth>
    <October>0,47</October>
    <November>-0,17</November>
    ...
  </Month>
  ...
</document>

我已经搜索了一下,我看到了一些方法来使用linq但只使用一维数组,因为我最终想要的最终结果将是

Array[0,0] = -0.25
Array[0,1] = 0.95
Array[0,2] = -0.90
...

1 个答案:

答案 0 :(得分:3)

如果您对锯齿状数组(数组数组)感到满意,那么LINQ会让它变得相当简单:

XDocument doc = XDocument.Load(...);
var array = doc.Root
               .Elements("Month")
               .Select(month => month.Elements().Select(x => (double) x).ToArray())
               .ToArray();

如果你需要一个矩形阵列,那就太麻烦了。

就个人而言,我实际上会构建一个包含DepthOctoberNovember属性的自定义类型,而不是依赖于Month中元素的顺序,但这是一个不同的事情。

请注意,上面对double的强制转换(可能是?)会失败,因为更多的传统XML会使用.而不是,。但是,如果失败,您可以使用double.Parse(x.Value, someAppropriateCulture)代替。