[英]Xml parse object inside of list of objects inside object using LINQ
XML文件
<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>
我想用Points獲取這個Vertices
對象,但我不知道如何實現它。 到目前為止我嘗試了什么:
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();
這是代碼:
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()
你必須先找到Element(“Vertices”),然后找到Descendants(“Point”)列表
你需要選擇Vertices
Elements
的Point
Elements
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();
輸出:(來自調試器)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.