从XML创建自定义对象的2D数组

时间:2014-01-26 04:25:49

标签: c# xml arrays linq 2d

我有以下XML,我正在尝试使用LINQ进入数组:

<doc>
  <rows>
    <cols>
      <a>value</a>
      <b>value</b>
      <c>value</c>
      <d>value</d>
    </cols>
    // multiple col elements
 </rows>
 // multiple rows elements, each has a set of col elements
</doc>
// single doc (root) element

使用此代码:

ObjectType[][] var = (
from e in XDocument.Load("Test.xml").Root.Elements()
select (
from cols in e.Elements("cols")
select new ObjectType
{
a = (int)e.Element("a"),
b = (int)e.Element("b"),
c = (int)e.Element("c"),
d = (int)e.Element("d")
}).ToArray()).ToArray();

其中ObjectType是一个简单的整数结构:a,b,c和d。 XML看起来格式正确,但我不断收到System.ArgumentNullException。从我在调试器中可以看出,它没有超越第一个元素。

我的大脑怎么会让我失败呢?

1 个答案:

答案 0 :(得分:2)

应该是这样的

a = (int)cols.Element("a"),
b = (int)cols.Element("b"),
c = (int)cols.Element("c"),
d = (int)cols.Element("d")

使用cols代替e,e代表行。 您还必须将xml中的单词值更改为整数