使用C#Linq到XML解析GML数据
我知道这很可能是非常基本的,被问了一千次,但由于某种原因,我就是不能让它工作 我有一个如下所示的gml文件:使用C#Linq到XML解析GML数据,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我知道这很可能是非常基本的,被问了一千次,但由于某种原因,我就是不能让它工作 我有一个如下所示的gml文件: <?xml version='1.0' encoding='UTF-8'?> <schema xmlns='http://www.w3.org/2000/10/XMLSchema' xmlns:gml='http://www.opengis.net/gml' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:xsi='ht
<?xml version='1.0' encoding='UTF-8'?>
<schema
xmlns='http://www.w3.org/2000/10/XMLSchema'
xmlns:gml='http://www.opengis.net/gml'
xmlns:xlink='http://www.w3.org/1999/xlink'
xmlns:xsi='http://www.w3.org/2000/10/XMLSchema-instance'
xsi:schemaLocation='http://www.opengis.net/gml/feature.xsd'>
<gml:Polygon srsName='http://www.opengis.net/gml/srs/epsg.xml#4283'>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coord>
<gml:X>152.035953</gml:X>
<gml:Y>-28.2103190007845</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>152.035957</gml:X>
<gml:Y>-28.2102020007845</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>152.034636</gml:X>
<gml:Y>-28.2100120007845</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>152.034617</gml:X>
<gml:Y>-28.2101390007845</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>152.035953</gml:X>
<gml:Y>-28.2103190007845</gml:Y>
</gml:coord>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</schema>
152.035953
-28.2103190007845
152.035957
-28.2102020007845
152.034636
-28.2100120007845
152.034617
-28.2101390007845
152.035953
-28.2103190007845
我所需要做的就是从每个gml:coord节点读取X和Y。我使用的是C#3.0和LINQ,所以应该很简单,但我尝试的所有操作都只返回空结果
我只在VB中做过xml解析,所以C#方式目前对我来说有点陌生
谢谢,
Nathan我猜您没有包含名称空间。下面是一个简短但完整的程序,其中显示了所有坐标:
using System;
using System.Linq;
using System.Xml.Linq;
class Test
{
static void Main()
{
XDocument doc = XDocument.Load("test.xml");
XNamespace gml = "http://www.opengis.net/gml";
var query = doc.Descendants(gml + "coord")
.Select(e => new { X = (decimal) e.Element(gml + "X"),
Y = (decimal) e.Element(gml + "Y") });
foreach (var c in query)
{
Console.WriteLine(c);
}
}
}