Bonsoir,
Je suis sur Eclipse Version: 2024-09 (4.33.0) en JAVA-SE 18
J'essais de parser un fichier TCX avec SAX
A la ligne 48 j'ai l'erreur : Cannot cast from Node to Element du texte est en rouge
Je colle le code ci-dessous
Si l'on pouvait m'aider

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.Attributes;

import javax.swing.text.html.parser.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.w3c.dom.Element;

public class Main {
	
	public static void main(String[] args) {
        try {
            File tcxFile = new File("ASCU.tcx");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(tcxFile);
            doc.getDocumentElement().normalize();

            List<Trackpoint> trackpoints = parseTrackpoints(doc);
            List<SlopeSegment> slopeSegments = calculateSlopeSegments(trackpoints);

            for (SlopeSegment segment : slopeSegments) {
                System.out.println("Distance: " + segment.distance + "m, Slope: " + segment.slopePercentage + "%");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static List<Trackpoint> parseTrackpoints(Document doc) {
        List<Trackpoint> trackpoints = new ArrayList<>();
        NodeList nList = doc.getElementsByTagName("Trackpoint");

        for (int temp = 0; temp < nList.getLength(); temp++) {
        	 Node node = nList.item(temp);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element trackpointElement = (Element) node;
            double latitude = Double.parseDouble(trackpointElement.getElementsByTagName("LatitudeDegrees").item(0).getTextContent());
            double longitude = Double.parseDouble(trackpointElement.getElementsByTagName("LongitudeDegrees").item(0).getTextContent());
            double altitude = Double.parseDouble(trackpointElement.getElementsByTagName("AltitudeMeters").item(0).getTextContent());
            double distance = Double.parseDouble(trackpointElement.getElementsByTagName("DistanceMeters").item(0).getTextContent());

            trackpoints.add(new Trackpoint(latitude, longitude, altitude, distance));
        }
             
        }
        return trackpoints;
    }

    private static List<SlopeSegment> calculateSlopeSegments(List<Trackpoint> trackpoints) {
        List<SlopeSegment> slopeSegments = new ArrayList<>();

        for (int i = 1; i < trackpoints.size(); i++) {
            Trackpoint prev = trackpoints.get(i - 1);
            Trackpoint curr = trackpoints.get(i);

            double distanceDiff = curr.distance - prev.distance;
            double altitudeDiff = curr.altitude - prev.altitude;
            double slopePercentage = (altitudeDiff / distanceDiff) * 100;

            slopeSegments.add(new SlopeSegment(distanceDiff, slopePercentage));
        }

        return slopeSegments;
    }

    static class Trackpoint {
        double latitude;
        double longitude;
        double altitude;
        double distance;

        Trackpoint(double latitude, double longitude, double altitude, double distance) {
            this.latitude = latitude;
            this.longitude = longitude;
            this.altitude = altitude;
            this.distance = distance;
        }
    }

    static class SlopeSegment {
        double distance;
        double slopePercentage;

        SlopeSegment(double distance, double slopePercentage) {
            this.distance = distance;
            this.slopePercentage = slopePercentage;
        }
    }
	
	
}