Linq to XMLでXElementの.InnerText値を取得するにはどうすればよいですか?
-
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でコーディングしてからしばらく経ちました。
所属していません StackOverflow