Try adding some var_dumps in the innermost foreach (var_dump($pt->extensions);) maybe that will give some clues about what the issue is.
On Wed, Dec 18, 2019 at 6:18 PM Stefan A. <acid24@xxxxxxxxx> wrote:
With the contents of what you posted in the previous email, and with this code (added suppressing of errors because I got a bunch of warnings about geotracker:meta not being defined as a namespace)
<?php
$gpx = simplexml_load_file('test.gpx', SimpleXMLElement::class, LIBXML_NOBLANKS | LIBXML_NOERROR);
foreach ($gpx->trk as $trk) {
foreach ($trk->trkseg as $seg) {
foreach ($seg->trkpt as $pt) {
echo "lat: ", $pt["lat"], " lon: ", $pt["lon"];
echo " ele: ", $pt->ele, " time: ", $pt->time;
echo " extensions: c: ", $pt->extensions->{'geotracker:meta'}['c'] ?? 'N/A';
echo " s: ", $pt->extensions->{'geotracker:meta'}['s'] ?? 'N/A', "\n";
}
}
}
I get
lat: 39.998454 lon: -105.086447 ele: 1568 time: 2019-12-16T10:59:47.000Z extensions: c: N/A s: 0
lat: 39.998553 lon: -105.086417 ele: 1577 time: 2019-12-16T11:01:39.000Z extensions: c: N/A s: N/A
lat: 39.998654 lon: -105.086395 ele: 1572 time: 2019-12-16T11:01:44.000Z extensions: c: 0.3 s: 2.08
So I don't understand what the problem is either.On Wed, Dec 18, 2019 at 5:59 PM Ashley M. Kirchner <kirash4@xxxxxxxxx> wrote:The only thing that stands out is the minor version difference, you have 2.9.4 whereas I have 2.9.1 (and on CentOS there is no update to 2.9.4.)xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
libxml Version => 2.9.1
libxml
libXML support => active
libXML Compiled Version => 2.9.1
libXML Loaded Version => 20901
libXML streams => enabled
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
SimpleXML
SimpleXML support => enabled
xml
XML Support => active
XML Namespace Support => active
libxml2 Version => 2.9.1
xmlreader
XMLReader => enabled
xmlwriter
XMLWriter => enabled
libxslt compiled against libxml Version => 2.9.1So here's the full code now:<?php
//open gpx file
$gpx = simplexml_load_file("Dec_16,_2019_3_59_47_AM.gpx", SimpleXMLElement::class, LIBXML_NOBLANKS);
foreach ($gpx->trk as $trk) {
foreach ($trk->trkseg as $seg) {
foreach ($seg->trkpt as $pt) {
echo "lat: ", $pt["lat"], " lon: ", $pt["lon"];
echo " ele: ", $pt->ele, " time: ", $pt->time, "\n";
echo " extensions: c: ", $pt->extensions->{'geotracker:meta'}['c'] ?? 'N/A';
echo " s: ", $pt->extensions->{'geotracker:meta'}['s'] ?? 'N/A', "\n";
}
}
}
unset($gpx);?>... and this is what I get:lat: 39.998454 lon: -105.086447 ele: 1568 time: 2019-12-16T10:59:47.000Z
extensions: c: N/A s: N/A
lat: 39.998553 lon: -105.086417 ele: 1577 time: 2019-12-16T11:01:39.000Z
extensions: c: N/A s: N/A
lat: 39.998654 lon: -105.086395 ele: 1572 time: 2019-12-16T11:01:44.000Z
extensions: c: N/A s: N/AThose three records are:<trkseg>
<trkpt lat="39.998454" lon="-105.086447">
<ele>1568</ele>
<time>2019-12-16T10:59:47.000Z</time>
<extensions>
<geotracker:meta s="0" />
</extensions>
</trkpt>
<trkpt lat="39.998553" lon="-105.086417">
<ele>1577</ele>
<time>2019-12-16T11:01:39.000Z</time>
<extensions>
<geotracker c="0.03" s="1.83" />
</extensions>
</trkpt>
<trkpt lat="39.998654" lon="-105.086395">
<ele>1572</ele>
<time>2019-12-16T11:01:44.000Z</time>
<extensions>
<geotracker:meta c="0.3" s="2.08" />
</extensions>
</trkpt>I'm clearly missing something here but I can't figure out what ... By the way, thank you for your help so far. Much appreciated!AOn Wed, Dec 18, 2019 at 8:41 AM Stefan A. <acid24@xxxxxxxxx> wrote:This is the output of the command php -i | grep xml
$ php -i | grep xml
Configure Command => './configure' '--prefix=/usr/local/Cellar/php@7.2/7.2.23' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/7.2' '--with-config-file-path=/usr/local/etc/php/7.2' '--with-config-file-scan-dir=/usr/local/etc/php/7.2/conf.d' '--with-pear=/usr/local/Cellar/php@7.2/7.2.23/share/php@7.2/pear' '--enable-bcmath' '--enable-calendar' '--enable-dba' '--enable-dtrace' '--enable-exif' '--enable-ftp' '--enable-fpm' '--enable-intl' '--enable-mbregex' '--enable-mbstring' '--enable-mysqlnd' '--enable-opcache-file' '--enable-pcntl' '--enable-phpdbg' '--enable-phpdbg-webhelper' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--enable-zip' '--with-apxs2=/usr/local/opt/httpd/bin/apxs' '--with-bz2=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-curl=/usr/local/opt/curl-openssl' '--with-fpm-user=_www' '--with-fpm-group=_www' '--with-freetype-dir=/usr/local/opt/freetype' '--with-gd' '--with-gettext=/usr/local/opt/gettext' '--with-gmp=/usr/local/opt/gmp' '--with-iconv=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-kerberos=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-layout=GNU' '--with-ldap=/usr/local/opt/openldap' '--with-ldap-sasl=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-libxml-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-libedit=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-libzip' '--with-mhash=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-ndbm=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-openssl=/usr/local/opt/openssl@1.1' '--with-password-argon2=/usr/local/opt/argon2' '--with-pdo-dblib=/usr/local/opt/freetds' '--with-pdo-mysql=mysqlnd' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--with-pdo-pgsql=/usr/local/opt/libpq' '--with-pdo-sqlite=/usr/local/opt/sqlite' '--with-pgsql=/usr/local/opt/libpq' '--with-pic' '--with-png-dir=/usr/local/opt/libpng' '--with-pspell=/usr/local/opt/aspell' '--with-sodium=/usr/local/opt/libsodium' '--with-sqlite3=/usr/local/opt/sqlite' '--with-tidy=/usr/local/opt/tidy-html5' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-webp-dir=/usr/local/opt/webp' '--with-xmlrpc' '--with-xsl=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr' '--with-zlib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr'
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
libxml Version => 2.9.4
libxml
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
Simplexml support => enabled
xml
libxml2 Version => 2.9.4
xmlreader
xmlrpc
core library version => xmlrpc-epi v. 0.51
homepage => http://xmlrpc-epi.sourceforge.net
xmlwriter
libxslt compiled against libxml Version => 2.9.4On Wed, Dec 18, 2019 at 3:08 PM Ashley M. Kirchner <kirash4@xxxxxxxxx> wrote:Yeah I tried that. Didn't work. May I ask what XML extension you're using?On Wed, Dec 18, 2019 at 5:07 AM Stefan A. <acid24@xxxxxxxxx> wrote:This worked for me on PHP 7.2
foreach ($gpx->trk as $trk) {
foreach ($trk->trkseg as $seg) {
foreach ($seg->trkpt as $pt) {
echo "lat: ", $pt["lat"], " lon: ", $pt["lon"];
echo " ele: ", $pt->ele, " time: ", $pt->time;
echo " extensions: c: ", $pt->extensions->{'geotracker:meta'}['c'] ?? 'N/A', " s: ", $pt->extensions->{'geotracker:meta'}['s'] ?? 'N/A', "\n";
}
}
}On Wed, Dec 18, 2019 at 1:04 PM Aziz Saleh <azizsaleh@xxxxxxxxx> wrote:On Tue, Dec 17, 2019 at 10:56 PM Ashley M. Kirchner <kirash4@xxxxxxxxx> wrote:Hi folks,I'm having a hard time figuring this one out. I have the following (snippet) of a GPX file:<gpx version="1.1" ...><trk><trkseg>
<trkpt lat="39.998454" lon="-105.086447">
<ele>1568</ele>
<time>2019-12-16T10:59:47.000Z</time>
<extensions>
<geotracker:meta s="0" />
</extensions>
</trkpt>
<trkpt lat="39.998553" lon="-105.086417">
<ele>1577</ele>
<time>2019-12-16T11:01:39.000Z</time>
<extensions>
<geotracker:meta c="0.03" s="1.83" />
</extensions>
</trkpt>......</trkseg></trk></gpx>Getting to the most of the nodes is easy:<?php
//open gpx file
$gpx = simplexml_load_file("Dec_16,_2019_3_59_47_AM.gpx");foreach ($gpx->trk as $trk) {
foreach ($trk->trkseg as $seg) {
foreach ($seg->trkpt as $pt) {
echo "lat: ", $pt["lat"], " lon: ", $pt["lon"];
echo " ele: ", $pt->ele, " time: ", $pt->time, "\n";
}
}
}
unset($gpx);?>But for the life of me, I can't figure out how to get information that's on the geotracker:meta line. Also note that not every single one of them will have both the 'c' and 's' attributes. Does anyone have any pointers pls?AConverting it to array should make it easier for you: