Linq to XMLでXElementの.InnerText値を取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/153413

  •  03-07-2019
  •  | 
  •  

質問

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を取得するにはどうすればよいですか?

役に立ちましたか?

解決

欠落していたのは、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

XElement.ToStringは、tbrownellが示唆したように、InnerTextと同等です。

他のヒント

試してみました:

Placemark.ToString()

列挙も見逃しました。 .Valueを使用すると、null例外を受け取る可能性があります。代わりにこれと同等のものを試してください:

(string)Placemark.<g:name>

VBの構文がわからないので、VBでコーディングしてからしばらく経ちました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top