1

Please help me with any advise, since I am far away of being aware of how XDocument XElement works with Schemas ...

I actually only want to parse the content, without validating the XML - just want to read the data:

Here's the XML:

 <?xml version="1.0" encoding="utf-8"?><gpx creator="Garmin Desktop App" version="1.1" 
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd 
    http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd 
    http://www.garmin.com/xmlschemas/ActivityExtension/v1 http://www8.garmin.com/xmlschemas/ActivityExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/AdventuresExtensions/v1 http://www8.garmin.com/xmlschemas/AdventuresExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/PressureExtension/v1 http://www.garmin.com/xmlschemas/PressureExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/TripExtensions/v1 http://www.garmin.com/xmlschemas/TripExtensionsv1.xsd 
    http://www.garmin.com/xmlschemas/TripMetaDataExtensions/v1 http://www.garmin.com/xmlschemas/TripMetaDataExtensionsv1.xsd 
    http://www.garmin.com/xmlschemas/ViaPointTransportationModeExtensions/v1 http://www.garmin.com/xmlschemas/ViaPointTransportationModeExtensionsv1.xsd 
    http://www.garmin.com/xmlschemas/CreationTimeExtension/v1 http://www.garmin.com/xmlschemas/CreationTimeExtensionsv1.xsd 
    http://www.garmin.com/xmlschemas/AccelerationExtension/v1 http://www.garmin.com/xmlschemas/AccelerationExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/PowerExtension/v1 http://www.garmin.com/xmlschemas/PowerExtensionv1.xsd 
    http://www.garmin.com/xmlschemas/VideoExtension/v1 http://www.garmin.com/xmlschemas/VideoExtensionv1.xsd" 
    xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:wptx1="http://www.garmin.com/xmlschemas/WaypointExtension/v1" xmlns:gpxtrx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" 
    xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" 
    xmlns:trp="http://www.garmin.com/xmlschemas/TripExtensions/v1" xmlns:adv="http://www.garmin.com/xmlschemas/AdventuresExtensions/v1" 
    xmlns:prs="http://www.garmin.com/xmlschemas/PressureExtension/v1" xmlns:tmd="http://www.garmin.com/xmlschemas/TripMetaDataExtensions/v1" 
    xmlns:vptm="http://www.garmin.com/xmlschemas/ViaPointTransportationModeExtensions/v1" xmlns:ctx="http://www.garmin.com/xmlschemas/CreationTimeExtension/v1" 
    xmlns:gpxacc="http://www.garmin.com/xmlschemas/AccelerationExtension/v1" xmlns:gpxpx="http://www.garmin.com/xmlschemas/PowerExtension/v1" 
    xmlns:vidx1="http://www.garmin.com/xmlschemas/VideoExtension/v1">
    
      <metadata>
        <link href="http://www.garmin.com">
          <text>Garmin International</text>
        </link>
        <time>2018-03-14T18:43:36Z</time>
        <bounds maxlat="45.255227560139" maxlon="28.8452932373" minlat="43.22223" minlon="14.26041412592" />
      </metadata>
    
      <trk>
        <name>TEST</name>
        <extensions>
          <gpxx:TrackExtension>
            <gpxx:DisplayColor>Red</gpxx:DisplayColor>
          </gpxx:TrackExtension>
        </extensions>
        <trkseg>
          <trkpt lat="44.177107578143477" lon="16.26372094">
            <ele>0</ele>
            <time>2016-12-27T04:59:20Z</time>
          </trkpt>
          <trkpt lat="44.177290974184871" lon="16.2639852379">
            <ele>0</ele>
            <time>2016-12-28T04:59:40Z</time>
          </trkpt>
          <trkpt lat="44.178708018735051" lon="16.261576104">
            <ele>0</ele>
            <time>2016-12-29T05:00:00Z</time>
          </trkpt>
          <trkpt lat="44.179137004539371" lon="16.26883971">
            <ele>0</ele>
            <time>2016-12-30T05:00:20Z</time>
          </trkpt>
        </trkseg>
      </trk>
    
    </gpx>

BUT: I can load the XElement, but the foreach does not show anything. What I am doing wrong?

 var xelem = XElement.Load(whateverxml);
 foreach (XElement ele in xelem.Descendants("time"))
       Debug.Log(ele.Value);
Olio
  • 31
  • 1
  • 8
  • Your issue, as the above question answers, is that your xml contains namespaces, so you have to use it when searchig for elements. Your default namespace (when there is no `XXXX:` before the element name) is `xmlns="http://www.topografix.com/GPX/1/1"` – Magnetron Jun 09 '21 at 19:45
  • @Magnetron... ok, i will check... Thx – Olio Jun 09 '21 at 20:14

1 Answers1

0

Instead of

foreach (XElement ele in xelem.Descendants("time"))

Please use the following code.

XName xName = XName.Get("time", "http://www.topografix.com/GPX/1/1");
foreach (XElement ele in xelem.Descendants(xName))

Or

foreach (XElement ele in xelem.Descendants().Where(a => a.Name.LocalName == "time"))

Then, it will work.

Ming Shou
  • 129
  • 7