1

kml の特定の場所に gps 座標を追加して kml ファイルを変更するプロジェクトに取り組んでいます。ただし、私のコードは、最後に保存するときに、すべての要素に「gx」名前空間を追加しています。私はさまざまな Visual Basic XML の記述方法を調査して調べましたが、アイデアが尽きてしまいました。不要な名前空間の追加を停止するにはどうすればよいですか?!

test.kml:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.opengis.net/kml/2.2">
  <Document>
    <name>test.kml</name>
    <Snippet>File Created Mon Jul 9 15:50:16 2012</Snippet>
    <Style id="multiTrack_n">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/shapes/track.png</href>
        </Icon>
      </IconStyle>
      <LineStyle>
        <color>99ffac59</color>
        <width>6</width>
      </LineStyle>
    </Style>
    <Folder>
      <Placemark>
        <name>test.kml</name>
        <styleUrl>#multiTrack_n</styleUrl>
        <gx:Track>
          <!--GPS Tracking data Points-->
        </gx:Track>
      </Placemark>
    </Folder>
  </Document>
</kml>

コード:

Imports System.IO
Imports System.Xml
Imports System.DateTime
Imports <xmlns="http://www.opengis.net/kml/2.2">
Imports <xmlns:gx="http://www.opengis.net/kml/2.2">
...
Public Sub addCoordinate(ByVal lon As Double, ByVal lat As Double, ByVal att As Double, ByVal timeStamp As String)
        Dim currentDoc = XDocument.Load("test.kml")
        Try
            whenElement = _
                <when><%= timeStamp %></when>
            coordElement = _
                <gx:coord><%= lon.ToString %>,<%= lat.ToString %>,<%= att.ToString %></gx:coord>
            Dim testLocation = currentDoc.<kml>.<Document>.<Folder>.<Placemark>.Elements.Last()
            testLocation.Add(whenElement)
            testlocation.Add(coordElement)
            currentDoc.Save("test.kml")
        Catch ex As Exception
            Console.WriteLine(ex)
        End Try
    End Sub

コードの後:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<gx:kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.opengis.net/kml/2.2">
  <gx:Document>
    <gx:name>test.kml</gx:name>
    <gx:Snippet>File Created Mon Jul 9 16:40:11 2012</gx:Snippet>
    <gx:Style id="multiTrack_n">
      <gx:IconStyle>
        <gx:Icon>
          <gx:href>http://maps.google.com/mapfiles/kml/shapes/track.png</gx:href>
        </gx:Icon>
      </gx:IconStyle>
      <gx:LineStyle>
        <gx:color>99ffac59</gx:color>
        <gx:width>6</gx:width>
      </gx:LineStyle>
    </gx:Style>
    <gx:Folder>
      <gx:name>test.kml</gx:name>
      <gx:Placemark>
        <gx:name>test</gx:name>
        <gx:styleUrl>#multiTrack_n</gx:styleUrl>
        <gx:Track>
          <!--GPS Tracking data Points-->
          <when xmlns="http://www.opengis.net/kml/2.2">2012-07-09T08:40:29Z</when>
          <gx:coord xmlns:gx="http://www.opengis.net/kml/2.2">0,0,0</gx:coord>
          <when xmlns="http://www.opengis.net/kml/2.2">2012-07-09T08:40:33Z</when>
          <gx:coord xmlns:gx="http://www.opengis.net/kml/2.2">0,0,0</gx:coord>
          <when xmlns="http://www.opengis.net/kml/2.2">2012-07-09T08:40:41Z</when>
          <gx:coord xmlns:gx="http://www.opengis.net/kml/2.2">0,0,0</gx:coord>
        </gx:Track>
      </gx:Placemark>
    </gx:Folder>
  </gx:Document>
</gx:kml>
4

1 に答える 1

1

コメントの内容を理解した後、XML にデフォルト NS がhttp://www.opengis.net/kml/2.2である場合、すべての要素がそれを持っていると想定されるため、再保存すると、名前空間を適用します。

とても小さくてシンプルなこと...愚かな私...毎日何かを学ぶ

于 2012-07-10T14:53:13.290 に答える