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

Reply via email to