Ari Jolma kirjoitti 15.11.2017 klo 15:51:
Even Rouault kirjoitti 15.11.2017 klo 13:40:
On mercredi 15 novembre 2017 10:58:23 CET Ari Jolma wrote:
>
> Thus the return value of CPLGetXMLBoolean can't use CPLGetXMLValue
if it
> follows the logic of CPLFetchBool. That is true is existence and no
denial.
>
Why not
CPLGetXMLBoolean(node) == CPLTestBool(CPLGetXMLValue(node,NULL,"NO")) ?
Ah, but I want to test with node *and* path. Node will be the top
level node of the service XML.
Anyway, I think I need to start with
CSLFetchNameValueDef(poOpenInfo->papszOpenOptions
and based on that explicitly set the element value to "TRUE" if the
option exists and is not false. Then I can rely on the value of the
element being "TRUE" if it is set.
I think the best approach is
CPLGetXMLBoolean(node, path) ==
node = CPLGetXMLNode(node, path);
if node == NULL return FALSE;
value = CPLGetXMLValue(node, NULL, "");
if value == "" return TRUE;
return CPLTestBool(value);
This should return TRUE if the node exists and does not contain
something that is considered untrue in GDAL, which is consistent with
how CPLFetchBool() behaves.
Ari
Ari
--
Spatialys - Geospatial professional services
http://www.spatialys.com
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev