vb.net - 用于 KML 的 Linq 到 XML?

标签 vb.net linq-to-xml kml

我是 LINQ to XML 新手,也是 KML 新手;所以忍受我。

我的目标是从 KML 文件中提取单个地标。我的 KML 是这样开始的:

<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="http://earth.google.com/kml/2.0">
  <name>Concessions</name>
  <visibility>1</visibility>
  <Folder>
    <visibility>1</visibility>
    <Placemark>
      <name>IN920211</name>
      <Style>
        <PolyStyle>
          <color>80000000</color>
        </PolyStyle>
      </Style>
      <Polygon>
        <altitudeMode>relativeToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>11.728374,1.976421,0 11.732967,1.965322,0 11.737225,1.953161,0 11.635858,1.940812,0 11.658102,1.976874,0 11.728374,1.976421,0 </coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
    <Placemark>
    ...

这是我得到的:

    Dim Kml As XDocument = XDocument.Load(Server.MapPath("../kmlimport/ga.kml"))
    Dim Placemarks = From Placemark In Kml.Descendants("Placemark") _
         Select Name = Placemark.Element("Name").Value

到目前为止还不好 - Kml.Descendants("Placemark") 给了我一个空的枚举。文档已正确加载 - 因为 KML.Descendants 包含每个节点。对于这些查询的值(value),这些查询也是空的:
Dim foo = Kml.Descendants("Document") 
Dim foo = Kml.Descendants("Folder") 

有人可以指出我正确的方向吗?指向优秀的 Linq to XML 教程的链接的加分点 - 我在网上找到的那些只限于非常简单的场景。

最佳答案

这在 C# 中对我有用:

XDocument doc = XDocument.Load(@"TheFile.kml");

var q = doc.Descendants().Where(x => x.Name.LocalName == "Placemark"); 

关于vb.net - 用于 KML 的 Linq 到 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/151521/

相关文章:

c# - 有没有办法在 c# 谓词中进行这种转换

api - 使用 kml 文件时,Google map 缩放被覆盖

ios - 将我的 Pin 更改为自定义图像在我的 MKMapView 中不起作用

asp.net - 无法创建页面方法 "GetCompletionList",因为未找到 CodeBehind 或 CodeFile 文件! Ajax Visual Studio 2012

vb.net - 使用 vb.net 将单引号替换为双引号

vb.net - 尝试将 XElement 添加到 XDocument 时出现 InvalidOperationException

php - Google Maps API V3 KML 图层不显示

windows - VB.NET 上的唯一硬件 ID

sql - 当列名是数字时,使用 VB.NET 中的 ADO 查询 Excel

c# - 更改 Nhibernate 连接字符串