代码之家  ›  专栏  ›  技术社区  ›  Nathan W

使用C#Linq到XML解析GML数据

  •  5
  • Nathan W  · 技术社区  · 16 年前

    我有一个如下所示的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='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>
    

    我只在VB中做过xml解析,所以C#方式目前对我来说有点陌生。

    谢谢 内森

    1 回复  |  直到 10 年前
        1
  •  7
  •   Jon Skeet    16 年前

    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);
            }
        }
    }