كيف يمكنني الحصول على 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 ، tbrownell المقترحة.

نصائح أخرى

هل جربت:

Placemark.ToString()

لقد غاب عن التعداد أيضا.عند استخدام .القيمة الممكن أن تتلقى فارغة استثناء.حاول equivelent هذا بدلا من ذلك:

(string)Placemark.<g:name>

آسف غير متأكد من VB الجملة ، ، ، فقد كان منذ بعض الوقت لقد مشفرة في VB.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top