我应该如何将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>
答案 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)
您只需键入XAttribute
到int
:
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();