Как я могу получить значение XElement .innerText в Linq to XML?

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 или какого-либо эквивалента, насколько я могу судить.Как мне получить необработанный XML-файл, который определяет XElement?

Это было полезно?

Решение

Чего мне не хватало, так это того, что Placemark.<g:Polygon> представляет собой набор XElements, а не один 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 является эквивалентом innerText, как предположил тброунелл.

Другие советы

Вы пробовали:

Placemark.ToString()

Я тоже пропустил Перечисление.При использовании значения .возможно получение исключения null.Вместо этого попробуйте эквивалент этого:

(string)Placemark.<g:name>

Извините, не уверен в синтаксисе VB,,, прошло много времени с тех пор, как я кодировал на VB.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top