Я пытаюсь разобрать файл gml в C #.Вот почему мне нужно выбрать некоторые конкретные элементы на нем.Я пытаюсь выбрать координаты, расположенные в <lifr:LineString gml:id="ls1">
Часть моего файла gml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<root xmlns:gml ="http://www.opengis.net/gml/3.2" xmlns:lifr="http://www.opengis.net/infragml/road/1.0" xmlns:xlink="http://www.opengis.net/infragml/road/1.0">
<lifr:stringLineSet>
<lifr:StringLineSet gml:id="sls1">
<gml:description>string lines delineating the top pavement surface</gml:description>
<gml:name>top surface pavement</gml:name>
<lifr:stringLineSetID>
<lifr:ID>
<identifier>pavement1</identifier>
</lifr:ID>
</lifr:stringLineSetID>
<lifr:stringLine>
<lifr:StringLine gml:id="sl1">
<gml:description>top surface</gml:description>
<gml:name>left edge pavement</gml:name>
<lifr:stringLineID>
<lifr:ID>
<identifier>LEP</identifier>
</lifr:ID>
</lifr:stringLineID>
<lifr:geometry>
<lifr:LineString gml:id="ls1">
<gml:pos>-3.650 1000 49.927</gml:pos>
<gml:pos>-3.650 1100 48.927</gml:pos>
</lifr:LineString>
</lifr:geometry>
</lifr:StringLine>
</lifr:stringLine>
<lifr:stringLine>
<lifr:StringLine gml:id="sl2">
<gml:description>top surface</gml:description>
<gml:name>centerline pavement</gml:name>
<lifr:stringLineID>
<lifr:ID>
<identifier>CLP</identifier>
</lifr:ID>
</lifr:stringLineID>
<lifr:geometry>
<lifr:LineString gml:id="ls2">
<gml:pos>0.000 1000 50.000</gml:pos>
<gml:pos>0.000 1100 49.000</gml:pos>
</lifr:LineString>
</lifr:geometry>
<lifr:alternativeGeometry xlink:href="ac1"/>
</lifr:StringLine>
</lifr:stringLine>
<lifr:stringLine>
<lifr:StringLine gml:id="sl3">
<gml:description>top surface</gml:description>
<gml:name>right edge pavement</gml:name>
<lifr:stringLineID>
<lifr:ID>
<identifier>REP</identifier>
</lifr:ID>
</lifr:stringLineID>
<lifr:geometry>
<lifr:LineString gml:id="ls3">
<gml:pos>3.650 1000 49.927</gml:pos>
<gml:pos>3.650 1100 48.927</gml:pos>
</lifr:LineString>
</lifr:geometry>
</lifr:StringLine>
</lifr:stringLine>
</lifr:StringLineSet>
</lifr:stringLineSet>
</root>
Я пытался записать координаты в консоли с помощьюкод ниже, но я только что получил пустую консоль.
XNamespace gml = "http://www.opengis.net/gml/3.2";
XNamespace lifr = "http://www.opengis.net/infragml/road/1.0";
XDocument xmlDoc = XDocument.Load(@"C:\Road_example.gml");
IEnumerable<XElement> pavement =
from el in xmlDoc.Elements().Elements(lifr + "LineString")
where (string)el.Attribute(gml + "id") == "ls1"
select xmlDoc.Parent.Element(gml + "pos");
foreach (XElement coords in pavement)
Console.WriteLine(coords);
Console.ReadKey();