将XElement转换为Array

时间:2014-10-14 16:47:06

标签: xml linq-to-sql xelement

我应该如何将XElement转换为一个Point数组(Point可以是一个带有变量X和Y的类):

<Points xmlns="">
  <Point X="420" Y="240" />
  <Point X="400" Y="298" />
  <Point X="350" Y="335" />
  <Point X="289" Y="335" />
  <Point X="239" Y="298" />
  <Point X="220" Y="239" />
  <Point X="239" Y="181" />
  <Point X="289" Y="144" />
  <Point X="350" Y="144" />
  <Point X="400" Y="181" />
</Points>

2 个答案:

答案 0 :(得分:2)

这对我有用,能够从xe XElement获取一个数组。 (虽然可能有更好的方法)

Point[] points = (from pt in xe.Elements("Point")
                    let x = Convert.ToInt32(pt.Attribute("X").Value)
                    let y = Convert.ToInt32(pt.Attribute("Y").Value)
                    select new Point(x, y)).ToArray();

答案 1 :(得分:1)

您只需键入XAttributeint

Point[] points = (from pt in xe.Elements("Point")
                  let x = (int)pt.Attribute("X")
                  let y = (int)pt.Attribute("Y")
                  select new Point(x, y)).ToArray();

这样,如果在当前元素中找不到属性,则不会抛出异常,更不用说它更短了。或者如果您更喜欢方法语法:

Point[] points = xe.Elements("Point")
                   .Select(p => new Point((int)p.Attribute("X"), (int)p.Attribute("Y")))
                   .ToArray();