Reputation: 462
XML FILE
<Lines>
<LineEntity>
<Id>33947</Id>
<Name>SEC_137438957044</Name>
<IsUnderground>true</IsUnderground>
<R>0.209</R>
<ConductorMaterial>Steel</ConductorMaterial>
<LineType>Cable</LineType>
<ThermalConstantHeat>2400</ThermalConstantHeat>
<FirstEnd>41990</FirstEnd>
<SecondEnd>41992</SecondEnd>
<Vertices>
<Point>
<X>407566.68007470988</X>
<Y>5013899.3558040857</Y>
</Point>
<Point>
<X>407625.00589398207</X>
<Y>5013876.8697334668</Y>
</Point>
<Point>
<X>407717.51971015992</X>
<Y>5014160.9525629422</Y>
</Point>
<Point>
<X>407559.40091708023</X>
<Y>5014220.4665799234</Y>
</Point>
</Vertices>
</LineEntity>
</Lines>
I want to get this Vertices
object with Points, but I don't know how to get to it. What I tried so far:
var lines = xdoc.Descendants("LineEntity")
.Select(line => new Line
{
Id = (double)line.Element("Id"),
Name = (string)line.Element("Name"),
ConductorMaterial = (string)line.Element("ConductorMaterial"),
IsUnderground = (bool)line.Element("IsUnderground"),
R = (decimal)line.Element("R"),
FirstEnd = (int)line.Element("FirstEnd"),
SecondEnd = (int)line.Element("SecondEnd"),
LineType = (string)line.Element("LineType"),
ThermalConstantHeat = (int)line.Element("ThermalConstantHeat"),
Vertices = line.Descendants("Vertices").Select(p => new Point {
X = (decimal)p. //can't access Element
})
}).ToList();
Upvotes: 1
Views: 253
Reputation: 56
This is the code:
ThermalConstantHeat = (int)line.Element("ThermalConstantHeat"),
Vertices = line.Element("Vertices").Descendants("Point").Select(p => new TokenController.Point
{
X = (decimal)p.Element("X"),
Y = (decimal)p.Element("Y")//can't access Element
}).ToList()
you must first find Element("Vertices") then to find the Descendants("Point") List
Upvotes: 2
Reputation: 9771
You need to select Elements
of Point
inside Elements
of Vertices
like
var lines = xdoc.Descendants("LineEntity")
.Select(line => new Line
{
//Your rest of code same here
Vertices = line.Elements("Vertices").Elements("Point").Select(p => new Point
{
X = (decimal)p.Element("X"),
Y = (decimal)p.Element("Y"),
}).ToList()
}).ToList();
Output: (From Debugger)
Upvotes: 1