<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Parsing *.gpx-files with JDOM/XPath in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/parsing-gpx-files-with-jdom-xpath/m-p/480644#M13022</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Currently I'm working on an addin which should import data from a .gpx-file. To achieve this I want to use JDOM with XPath, but when I get to parse the data, nothing ever happens. My addin still runs and eclipse doesn't show any kind of errors.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The relevant line of code is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;Element testing = (Element) XPath.selectSingleNode(gpxDoc, "/gpx/trk/@*");&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there anybody, who has faced the same kind of problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dominik&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 17 May 2011 13:09:41 GMT</pubDate>
    <dc:creator>DominikWiedner</dc:creator>
    <dc:date>2011-05-17T13:09:41Z</dc:date>
    <item>
      <title>Parsing *.gpx-files with JDOM/XPath</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/parsing-gpx-files-with-jdom-xpath/m-p/480644#M13022</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Currently I'm working on an addin which should import data from a .gpx-file. To achieve this I want to use JDOM with XPath, but when I get to parse the data, nothing ever happens. My addin still runs and eclipse doesn't show any kind of errors.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The relevant line of code is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;Element testing = (Element) XPath.selectSingleNode(gpxDoc, "/gpx/trk/@*");&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there anybody, who has faced the same kind of problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dominik&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 May 2011 13:09:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/parsing-gpx-files-with-jdom-xpath/m-p/480644#M13022</guid>
      <dc:creator>DominikWiedner</dc:creator>
      <dc:date>2011-05-17T13:09:41Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing *.gpx-files with JDOM/XPath</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/parsing-gpx-files-with-jdom-xpath/m-p/480645#M13023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Just in case, someone is facing the same problem, the solution is to use JDOM only. Since the use of JDOM and XPATH results, for unknown reasons, in an untraceable error (ArcMap and the addin continue to run and you also can choose another file to parse, but you won't get any results!).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So you have to use JDOM only!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The resulting code is rather intricate:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
private void LoadGPXTracks(File importFile) throws JDOMException, IOException, ParseException
 {
&amp;nbsp;&amp;nbsp; //XML-Datei einladen
&amp;nbsp;&amp;nbsp; Document gpxDoc = new SAXBuilder().build(importFile);
&amp;nbsp;&amp;nbsp; Namespace gpx_ns = Namespace.getNamespace("http://www.topografix.com/GPX/1/1");
&amp;nbsp;&amp;nbsp; Element gpx_root = gpxDoc.getRootElement();
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; int j = 0;
&amp;nbsp;&amp;nbsp; for (Iterator it = gpx_root.getChildren("trk", gpx_ns).iterator(); it.hasNext();)
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Element trk = (Element) it.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if("trk".equals(trk.getName()))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFeature feature = _featureClassTracks.createFeature();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int contractorFieldIndex = _featureClassTracks.findField("objname");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (contractorFieldIndex &amp;gt;= 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature.setValue(contractorFieldIndex, trk.getChildText("name", gpx_ns).toString());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contractorFieldIndex = _featureClassTracks.findField("kern_id");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (contractorFieldIndex &amp;gt;= 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature.setValue(contractorFieldIndex, j++);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IGeometryBridge2 pGeoBrg = new GeometryEnvironment();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPointCollection4 pPointColl = new Polyline();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //List&amp;lt;?&amp;gt; trackSegsInfo = XPath.selectNodes(gpxDoc, "/gpx/trk/trkseg/");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element trk_seg = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Iterator it_seg = trk.getChildren("trkseg", gpx_ns).iterator(); it_seg.hasNext();)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trk_seg = (Element) it_seg.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Iterator trk_pt_count = trk_seg.getChildren("trkpt", gpx_ns).iterator(); trk_pt_count.hasNext();)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element trk_pt_count_elem = (Element) trk_pt_count.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point point_help = new Point();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPoint aPointBuffer = point_help;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPoint[] aPointBufferArray = new Point&lt;I&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Iterator it_pt = trk_seg.getChildren("trkpt", gpx_ns).iterator(); it_pt.hasNext();)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element trk_pt = (Element) it_pt.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String longitude = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String latitude =&amp;nbsp; null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator it_trk_pt_attr = trk_pt.getAttributes().iterator(); it_trk_pt_attr.hasNext();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attribute trk_pt_attr = (Attribute) it_trk_pt_attr.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; latitude =&amp;nbsp; trk_pt_attr.getValue().toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trk_pt_attr = (Attribute) it_trk_pt_attr.next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; longitude = trk_pt_attr.getValue().toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String elevation = trk_pt.getChildText("ele", gpx_ns).toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String time = trk_pt.getChildText("time", gpx_ns).toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point point = CreatePoint(longitude, latitude, elevation != null ? elevation : "0");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aPointBuffer = point;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aPointBufferArray&lt;I&gt; = aPointBuffer;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFeature trkPntFeature = _featureClassTrackPoints.createFeature();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trkPntFeature.setShapeByRef(point);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (time != null)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateFormat format = new SimpleDateFormat("yyyy'-'MM'-'dd'T'hh:mm:ss");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date d = format.parse(time);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trkPntFeature.setValue(trkPntFeature.getFields().findField("time"), d);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trkPntFeature.store();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGeoBrg.setPoints(pPointColl, aPointBufferArray);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature.setShapeByRef((IPolyline) pPointColl);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature.store();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; it.next();
&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
 }
&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dominik&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 21:12:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/parsing-gpx-files-with-jdom-xpath/m-p/480645#M13023</guid>
      <dc:creator>DominikWiedner</dc:creator>
      <dc:date>2021-12-11T21:12:41Z</dc:date>
    </item>
  </channel>
</rss>

