3

我正在尝试从 KML 文件中的地标中提取多边形。到现在为止还挺好:

Imports <xmlns:g='http://earth.google.com/kml/2.0'>
Imports System.Xml.Linq

Partial Class Test_ImportPolygons
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim Kml As XDocument = XDocument.Load(Server.MapPath("../kmlimport/ga.kml"))
        For Each Placemark As XElement In Kml.<g:Document>.<g:Folder>.<g:Placemark>
            Dim Name As String = Placemark.<g:name>.Value
            ...
        Next
    End Sub

End Class

我想将整个<polygon>...</polygon>块捕获为字符串。我尝试过这样的事情(上面的 ... ):

        Dim Polygon as String = Placemark.<g:Polygon>.InnerText

但据我所知,XElement 对象没有 InnerText 属性或任何等价物。如何获取定义 XElement 的原始 XML?

4

3 回答 3

1

你有没有尝试过:

Placemark.ToString()
于 2008-09-30T15:11:59.567 回答
1

我缺少的是Placemark.<g:Polygon>XElement 的集合,而不是单个 XElement。这有效:

    For Each Placemark As XElement In Kml.<g:Document>.<g:Folder>.<g:Placemark>
        Dim Name As String = Placemark.<g:name>.Value
        Dim PolygonsXml As String = ""
        For Each Polygon As XElement In Placemark.<g:Polygon>
            PolygonsXml &= Polygon.ToString
        Next
    Next

正如 tbrownell 所建议的,XElement.ToString 相当于 InnerText。

于 2008-09-30T15:19:00.283 回答
0

我也错过了枚举。使用 .Value 时,可能会收到空异常。试试这个的等价物:

(string)Placemark.<g:name>

抱歉,不确定 VB 语法,,,自从我在 VB 中编码以来已经有一段时间了。

于 2008-09-30T15:36:58.540 回答