And whole code I've used to test
<?php
$xml = <<<XML
<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>
XML;
$gpx = simplexml_load_string($xml, 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;
echo " extensions: c: ", $pt->extensions->{'geotracker:meta'}['c'] ?? 'N/A', " s: ", $pt->extensions->{'geotracker:meta'}['s'] ?? 'N/A', "\n";
}
}
}
Maybe you need the LIBXML_NOBLANKS option
<?php
$xml = <<<XML
<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>
XML;
$gpx = simplexml_load_string($xml, 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;
echo " extensions: c: ", $pt->extensions->{'geotracker:meta'}['c'] ?? 'N/A', " s: ", $pt->extensions->{'geotracker:meta'}['s'] ?? 'N/A', "\n";
}
}
}
Maybe you need the LIBXML_NOBLANKS option
On Wed, Dec 18, 2019 at 4:41 PM 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: