C# 如何使用c解析此xml#

C# 如何使用c解析此xml#,c#,linq,xml-parsing,C#,Linq,Xml Parsing,我想用LINQ在c#中解析这个xml。我输入了一个地名“RFA13”。 我想得到这个输入值的坐标节点 <?xml version='1.0' encoding='UTF-8'?> <kml xmlns='http://www.opengis.net/kml/2.2'> <Document> <name>EQDemo</name> <description><![C

我想用LINQ在c#中解析这个xml。我输入了一个地名“RFA13”。 我想得到这个输入值的坐标节点

<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
    <Document>
            <name>EQDemo</name>
            <description><![CDATA[]]></description>
            <Folder>
                <name>Untitled layer</name>
                <Placemark>
                    <styleUrl>#line-000000-4</styleUrl>
                    <name>RFA13</name>
                    <Polygon>
                        <outerBoundaryIs>
                            <LinearRing>
                                <tessellate>0</tessellate>
                                <coordinates>-97.77405023574829,30.27369885454351,0.0 -97.79602289199829,30.261244946171974,</coordinates>
                            </LinearRing>
                        </outerBoundaryIs>
                    </Polygon>
                </Placemark>
            </Folder>
            <Folder>
                <name>Untitled layer</name>
                <Placemark>
                    <styleUrl>#line-000000-4</styleUrl>
                    <name>RFA14</name>
                    <Polygon>
                        <outerBoundaryIs>
                            <LinearRing>
                                <tessellate>0</tessellate>
                                <coordinates>-97.76755392551422,30.284103698805,0.0 -97.77020126581192,30.279346144221726,0.0 -97.77405023574829,30.27369885454351,0.0</coordinates>
                            </LinearRing>
                        </outerBoundaryIs>
                    </Polygon>
                </Placemark>
            </Folder>
    </Document>
</kml>

EQDemo
无标题层
#第-000000-4行
RFA13
0
-97.77405023574829,30.27369885454351,0.0 -97.79602289199829,30.261244946171974,
无标题层
#第-000000-4行
RFA14
0
-97.76755392551422,30.284103698805,0.0 -97.77020126581192,30.279346144221726,0.0 -97.77405023574829,30.27369885454351,0.0

您可以使用
XDocument
和XPath:

var xDoc = XDocument.Load("Input.txt");

var coordinates = xDoc.XPathSelectElement(@"Document/Folder/Placemark[name = 'RFA13']/Polygon/outerBoundaryIs/LinearRing/coordinates");

您需要在文件顶部使用
导入
System.Xml.Linq
System.Xml.XPath

因此您在
kml
元素中声明了Xml名称空间,然后您应该使用它来提供元素名称:

string name = "RFA13";
var xdoc = XDocument.Load(path_to_xml);
var ns = xdoc.Root.GetDefaultNamespace(); // get namespace
// find placemark element with name you provided
var placemark = xdoc.Descendants(ns + "Placemark")
                    .FirstOrDefault(p => (string)p.Element(ns + "name") == name);

if (placemark != null) // check if placemark found
{
    // assume every placemark has coordinates
    string coordinates = placemark.Descendants(ns + "coordinates")
                                  .Select(c => (string)c)
                                  .First();
}

它的值为null,因此您的文档看起来不像您发布的文档。我用给定的XML测试了它,它返回正确的
坐标
元素。对不起,忘记更新kml节点了