парсинг данных XML и GPS в список - PullRequest
1 голос
/ 01 апреля 2012
<lap1>
     <Track>
  <Trackpoint>
     <Time>2012-03-29T08:06:57Z</Time>
     <Position>
       <LatitudeDegrees>46.2950333</LatitudeDegrees>
      <LongitudeDegrees>7.1046736</LongitudeDegrees>
    </Position>
     <AltitudeMeters>1782.4216309</AltitudeMeters>
<DistanceMeters>0.0000000</DistanceMeters>
<HeartRateBpm xsi:type="HeartRateInBeatsPerMinute_t">
  <Value>112</Value>
</HeartRateBpm>
<SensorState>Absent</SensorState>
   </Trackpoint>
   <Trackpoint>
        <Time>2012-03-29T08:06:58Z</Time>
    <Position>
      <LatitudeDegrees>46.2950271</LatitudeDegrees>
      <LongitudeDegrees>7.1046776</LongitudeDegrees>
     </Position>
    <AltitudeMeters>1782.4216309</AltitudeMeters>
     <DistanceMeters>0.1714377</DistanceMeters>
<HeartRateBpm xsi:type="HeartRateInBeatsPerMinute_t">
  <Value>112</Value>
</HeartRateBpm>
<SensorState>Absent</SensorState>
  </Trackpoint>
  </Track>
</lap1>

У меня есть этот кусок XML с моего устройства GPS, и я пытаюсь разобрать его в список треков

public class track
{
    public float positionx;
    public float positiony;
    public float altitude;
    public DateTime Time;
}

не проделав большую работу XML, я читал различные методы XML, включая XPathи LinqToXML, но я изо всех сил пытаюсь разобрать xml, в частности, «Положение и его значения»

Я был бы очень признателен за любую помощь в этом

1 Ответ

3 голосов
/ 01 апреля 2012

Это должно сработать:

XDocument doc = XDocument.Load("file.xml"); 

var tracks = (from elem in doc.Root.Descendants("Trackpoint") 
               select new track() 
               { 
                   Time = DateTime.Parse(elem.Element("Time").Value, CultureInfo.InvariantCulture),  
                   positionx = float.Parse(elem.Element("Positition").Element("LatitudeDegrees").Value, CultureInfo.InvariantCulture),  
                   positiony = float.Parse(elem.Element("Positition").Element("LongitudeDegrees").Value, CultureInfo.InvariantCulture),  
                   altitude = float.Parse(elem.Element("AltitudeMeters").Value, CultureInfo.InvariantCulture),  
               }); 

Скажите, работает ли он!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...