如何在Linq to XML中获得XElement的.InnerText值?
时间:2020-03-06 14:55:36 来源:igfitidea点击:
我正在尝试从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.ToString()
我所缺少的是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等效。
我也错过了枚举。使用.Value时,可能会收到null异常。请尝试与此等效的方法:
(string)Placemark.<g:name>
很抱歉,不确定VB语法,因为我已经在VB中进行编码,已经有一段时间了。