IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème avec org.w3c.dom.Element


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut Problème avec org.w3c.dom.Element
    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;
            }
        }
    	
    	
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 092
    Par défaut
    Vérifie cet import, c'est probablement lui le coupable qui ne devrait pas etre la.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import javax.swing.text.html.parser.Element;
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut
    Bonsoir wax78,

    Merci d'avoir répondu.

    J'ai supprimer l'import mais j'ai toujours le même réponse - Cannot cast from Node to Element

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 092
    Par défaut
    Ecoute je ne sais pas quoi te dire, si je prends ton exemple qui donne la même erreur que toi et que je retire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import javax.swing.text.html.parser.Element;
    Plus d'erreur...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 337
    Par défaut
    Peut-être supprimer l'import Swing et rajouter `import org.w3c.dom.Element`?

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 092
    Par défaut
    Il y'est mais est en conflit avec javax.swing.text.html.parser.Element d'ou l'erreur.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 337
    Par défaut
    Alors, il faut préciser le type avec le nom qualifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     org.w3c.dom.Element trackpointElement = (org.w3c.dom.Element) node;
    (D'ou l'intérêt de séparer les roles pour éviter ce genre de conflits entre des elements de vues et des elements du "modèle".)

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 573
    Par défaut
    .... Mec.

    Si on doit utiliser le nom qualifié alors ça ne sert à rien de mettre un import.

    Si on ne garde que le bon import alors il n'y a pas besoin de nom qualifié.

    Il n'y a clairement pas de rôles à différencier dans le code qui a cette erreur. Des classes de GUI n'ont rien à faire là, et c'est tout.

    J'ai l'impression que les idées deviennent un peu confuses, là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 337
    Par défaut
    Le nom qualifié permet de (mal) résoudre les conflits.

    Dans son cas, il à deux import pour "Element":
    1. javax.swing.text.html.parser.Element
    2. org.w3c.dom.Element


    Si il a effectivement besoin des deux dans la même classe il n'aura pas d'autres choix que de qualifier l'un ou l'autre (et retirer l'import correspondant).

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 573
    Par défaut
    ... Oui, c'est une des choses que j'ai dites, de manière plus simple, plus claire et plus directe.

    Mais j'ai aussi signalé qu'il n'a de toute façon pas besoin des deux. C'est par erreur que les deux sont là. Pas parce qu'il y a des rôles mal séparés. Mais parce qu'il y en a un qui n'a rien à faire là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 092
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Mais parce qu'il y en a un qui n'a rien à faire là.
    C'est ce que je disait le 3 mars ... mais bon la on tourne en rond et le questionneur n'est plus la, ca sert a rien de chipoter plus
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2011, 00h55
  2. [XSD] [DOM] - Valider un org.w3c.dom.Document construit programmatiquement avec un XSD
    Par braindeadbzh dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 10/03/2011, 13h55
  3. Problème avec la librairie org.w3c.dom
    Par oraur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 13/07/2010, 20h55
  4. [DOM] la methode getTextContent de org.w3c.dom.element
    Par riadhhwajdii dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 17/03/2010, 15h15
  5. Créer un org.w3c.dom.Document depuis une String
    Par BouB dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 22/06/2007, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo