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:
Aggiornamento:codice:Object result = xpath.evaluate("/gpx:gpx/gpx:trk/gpx:trkseg/gpx:trkpt/gpx:time/text()", document,XPathConstants.NODESET);
Si a quanto pare
Così ottengo questo output: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 } }
L'unica cosa ora è come dire nel path di prendere anche l'elevazione. Devo creare un altro oggetto Object result2 = xpath.evaluate..?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" ... ... ...


Rispondi quotando