Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Parsing file .gpx

Visualizzazione discussione

  1. #5
    Capito! Questo XPath sembra molto utile. Quindi se io volessi estrapolare solo gli attributi degli elementi <trkpt> (latitudine e longitudine) E l'elevazione dentro <ele> dovrei andare a modificare questa riga prima di tutto:

    codice:
    Object result = xpath.evaluate("/gpx:gpx/gpx:trk/gpx:trkseg/gpx:trkpt/gpx:time/text()",
                        document,XPathConstants.NODESET);
    
    Aggiornamento:

    Si a quanto pare

    codice:
    import java.util.*;
    import javax.xml.XMLConstants;
    import javax.xml.namespace.*;
    import javax.xml.parsers.*;
    import javax.xml.xpath.*;
    import org.w3c.dom.*;
    
    
    public class Main {
        
        public static void main(String [] args) {
            
            try {
                
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                dbf.setNamespaceAware(true);
                DocumentBuilder builder = dbf.newDocumentBuilder();
    
    
                Document document = builder.parse("prova.gpx");
    
    
                XPathFactory xpf = XPathFactory.newInstance();
                XPath xpath = xpf.newXPath();
                xpath.setNamespaceContext(new GpxNamespaceContext());
    
    
                Object result = xpath.evaluate("/gpx:gpx/gpx:trk/gpx:trkseg/gpx:trkpt",
                        document, XPathConstants.NODESET);
                
                NodeList list = (NodeList) result;
    
    
                for (int i = 0; i < list.getLength(); i++) {
                    Node node = list.item(i);
                    NamedNodeMap nnm = node.getAttributes();
                    System.out.println(nnm.item(0) + " " + nnm.item(1));
                }
            }
            
            catch (Exception e) {
                System.err.println(e);
            }
        }
    }
    
    
    class GpxNamespaceContext implements NamespaceContext {
        public String getNamespaceURI(String prefix) {
            if (prefix == null) {
                throw new IllegalArgumentException("prefix cannot be null");
            } else if (prefix.equals("gpx")) {
                return "http://www.topografix.com/GPX/1/1";
            } else {
                return XMLConstants.NULL_NS_URI;
            }
        }
    
    
        public String getPrefix(String namespaceURI) {
            return null;   // getPrefix non serve in questo caso
        }
    
    
        public Iterator getPrefixes(String namespaceURI) {
            return null;   // getPrefixes non serve in questo caso
        }
    }
    Così ottengo questo output:

    codice:
    lat="40.132004" lon="15.831839"
    lat="40.131973" lon="15.831815"
    lat="40.131897" lon="15.831679"
    lat="40.131798" lon="15.831541"
    lat="40.131794" lon="15.831545"
    lat="40.131699" lon="15.831446"
    lat="40.131588" lon="15.831304"
    lat="40.131523" lon="15.831274"
    lat="40.131458" lon="15.831181"
    lat="40.131420" lon="15.831067"
    lat="40.131325" lon="15.830970"
    lat="40.131233" lon="15.830803"
    lat="40.131088" lon="15.830819"
    lat="40.131023" lon="15.830804"
    lat="40.131016" lon="15.830626"
    lat="40.131020" lon="15.830546"
    lat="40.131023" lon="15.830420"
    lat="40.131008" lon="15.830357"
    lat="40.130939" lon="15.830152"
    lat="40.130798" lon="15.829922"
    lat="40.130768" lon="15.829756"
    lat="40.130703" lon="15.829603"
    lat="40.130653" lon="15.829369"
    ...
    ...
    ...
    L'unica cosa ora è come dire nel path di prendere anche l'elevazione. Devo creare un altro oggetto Object result2 = xpath.evaluate..?
    Ultima modifica di Javino89; 15-10-2013 a 09:33

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.