[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mapguide-commits
Subject:    [mapguide-commits] r8819 - sandbox/jng/clean_json/Web/src/HttpHandler
From:       svn_mapguide () osgeo ! org
Date:       2015-11-07 17:19:53
Message-ID: 20151107171953.F1C853901E8 () trac ! osgeo ! org
[Download RAW message or body]

Author: jng
Date: 2015-11-07 09:19:53 -0800 (Sat, 07 Nov 2015)
New Revision: 8819

Modified:
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.cpp
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.h
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.cpp
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.h
   sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.cpp
   sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.h
Log:
Check in infrastructure for clean JSON conversion. No actual conversion is done yet.

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.cpp
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.cpp	2015-11-07 \
                15:51:29 UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.cpp	2015-11-07 \
17:19:53 UTC (rev 8819) @@ -35,6 +35,8 @@
 {
     MG_HTTP_HANDLER_TRY()
 
+    m_bCleanJson = false;
+
     // Check that this HTTP operation is enabled in webconfig.ini
     STRING disableProperty;
     switch (GetRequestClassification())
@@ -178,6 +180,13 @@
         m_userInfo->SetClientIp(clientIp);
     }
 
+    // Get clean json flag (CLEAN)
+    STRING cleanJson = hrParam->GetParameterValue(MgHttpResourceStrings::reqClean);
+    if (cleanJson.length() > 0)
+    {
+        m_bCleanJson = (cleanJson == L"1");
+    }
+
     // Short circuit the authentication check if no username or session is supplied.
     // This will ensure that load balancing works correctly if browsers send an
     // unauthenticated then an authenticated request.
@@ -275,6 +284,6 @@
         m_responseFormat == MgMimeType::Json)
     {
         MgXmlJsonConvert convert;
-        convert.ToJson(byteReader);
+        convert.ToJson(byteReader, m_bCleanJson);
     }
 }

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.h
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.h	2015-11-07 \
                15:51:29 UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpRequestResponseHandler.h	2015-11-07 \
17:19:53 UTC (rev 8819) @@ -125,6 +125,7 @@
     Ptr<MgHttpRequest> m_hRequest;
     STRING m_version;
     STRING m_responseFormat;
+    bool m_bCleanJson;
     Ptr<MgUserInformation> m_userInfo;
     Ptr<MgSiteConnection> m_siteConn;
 };

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.cpp
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.cpp	2015-11-07 \
                15:51:29 UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.cpp	2015-11-07 \
17:19:53 UTC (rev 8819) @@ -82,6 +82,7 @@
 const STRING MgHttpResourceStrings::reqClientAgent = L"CLIENTAGENT";
 const STRING MgHttpResourceStrings::reqClientIp = L"CLIENTIP";
 const STRING MgHttpResourceStrings::reqResponseFormat = L"FORMAT";
+const STRING MgHttpResourceStrings::reqClean = L"CLEAN";
 
 // Predefined Resource Service Request Parameters
 const STRING MgHttpResourceStrings::reqType = L"TYPE";

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.h
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.h	2015-11-07 \
                15:51:29 UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpResourceStrings.h	2015-11-07 \
17:19:53 UTC (rev 8819) @@ -86,6 +86,7 @@
     static const STRING reqClientAgent;
     static const STRING reqClientIp;
     static const STRING reqResponseFormat;
+    static const STRING reqClean;
 
     // PREDEFINED RESOURCE REQUEST PARAMETERS
     static const STRING reqType;

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.cpp
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.cpp	2015-11-07 15:51:29 \
                UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.cpp	2015-11-07 17:19:53 \
UTC (rev 8819) @@ -22,8 +22,14 @@
 #include <string>
 #include <map>
 #include <vector>
+#include <set>
 using namespace std;
 
+static map<string, INT32> s_elementPathTypeMap;
+static set<string> s_multiElementPaths;
+
+bool MgXmlJsonConvert::m_isInitialized = MgXmlJsonConvert::Initialize();
+
 MgXmlJsonConvert::MgXmlJsonConvert()
 {
 }
@@ -32,7 +38,7 @@
 {
 }
 
-void MgXmlJsonConvert::ToJson(Ptr<MgByteReader> &byteReader)
+void MgXmlJsonConvert::ToJson(Ptr<MgByteReader> &byteReader, bool bClean)
 {
     string xmlDoc;
     byteReader->ToStringUtf8(xmlDoc);
@@ -45,7 +51,7 @@
     byteReader.Attach(byteSource->GetReader());
 }
 
-void MgXmlJsonConvert::ToJson(const string &xmlString, string &jsonString)
+void MgXmlJsonConvert::ToJson(const string &xmlString, string &jsonString, bool \
bClean)  {
     // Parse into DOM
     m_xmlUtil.ParseString(xmlString.c_str());
@@ -53,7 +59,7 @@
     string nodeName = MgUtil::WideCharToMultiByte(X2W(root->getNodeName()));
     m_jsonDoc.BeginObject(nodeName);
     {
-        XmlToJsonNode((DOMNode *)root);
+        XmlToJsonNode((DOMNode *)root, bClean);
     }
     m_jsonDoc.EndObject();
 
@@ -61,7 +67,7 @@
 }
 
 //  XmlToJSONnode:  Output an XmlElement, possibly as part of a higher array
-void MgXmlJsonConvert::XmlToJsonNode(DOMNode *node)
+void MgXmlJsonConvert::XmlToJsonNode(DOMNode *node, bool bClean)
 {
     // Build a sorted list of key-value pairs
     //  where   key is case-sensitive nodeName
@@ -281,3 +287,549 @@
     }
     m_jsonDoc.EndArrayObject();
 }
+
+bool MgXmlJsonConvert::GetElementPath(DOMNode * node, string & path, const XMLCh * \
suffix) +{
+    if (NULL != node) {
+        STRING elPath = L"/";
+        elPath += node->getNodeName();
+        elPath += suffix;
+        DOMNode* currentNode = node->getParentNode();
+        while (NULL != currentNode) {
+            if (currentNode->getNodeType() == DOMNode::DOCUMENT_NODE) {
+                STRING pathPart = L"/";
+                pathPart += currentNode->getNodeName();
+                elPath = pathPart + elPath;
+                currentNode = currentNode->getParentNode();
+                if (NULL == currentNode)
+                    break;
+            }
+            else {
+                break;
+            }
+        }
+        path = MgUtil::WideCharToMultiByte(elPath);
+        return true;
+    }
+    return false;
+}
+
+bool MgXmlJsonConvert::GetElementType(DOMNode * node, int & type, const XMLCh * \
suffix) +{
+    string path;
+    if (GetElementPath(node, path))
+    {
+        if (s_elementPathTypeMap.find(path) != s_elementPathTypeMap.end())
+        {
+            type = s_elementPathTypeMap[path];
+            return true;
+        }
+    }
+    return false;
+}
+
+bool MgXmlJsonConvert::IsMultiple(DOMNode * node, bool & isMultiple, const XMLCh * \
suffix) +{
+    string path;
+    if (GetElementPath(node, path, suffix))
+    {
+        isMultiple = (s_multiElementPaths.find(path) != s_multiElementPaths.end());
+        return true;
+    }
+    return false;
+}
+
+bool MgXmlJsonConvert::Initialize()
+{
+    //ApplicationDefinition-1.0.0.xsd
+    s_elementPathTypeMap["/ApplicationDefinition/MapSet/MapGroup/InitialView/CenterX"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ApplicationDefinition/MapSet/MapGroup/InitialView/CenterY"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ApplicationDefinition/MapSet/MapGroup/InitialView/Scale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ApplicationDefinition/WidgetSet/Widget/Disabled"] = \
XML_DATA_TYPE_BOOLEAN; +    //ApplicationDefinitionInfo-1.0.0.xsd
+    s_elementPathTypeMap["/ApplicationDefinitionWidgetInfoSet/WidgetInfo/StandardUi"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/ApplicationDefinitionWidgetInfoSet/WidgetInfo/Parameter/IsMandatory"] \
= XML_DATA_TYPE_BOOLEAN; +    //DataStoreList-1.0.0.xsd
+    s_elementPathTypeMap["/DataStoreList/DataStore/FdoEnabled"] = \
XML_DATA_TYPE_BOOLEAN; +    //DrawingSource-1.0.0.xsd
+    s_elementPathTypeMap["/DrawingSource/Sheet/Extent/MinX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/DrawingSource/Sheet/Extent/MinY"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/DrawingSource/Sheet/Extent/MaxX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/DrawingSource/Sheet/Extent/MaxY"] = XML_DATA_TYPE_NUMBER;
+    //FdoLongTransactionList-1.0.0.xsd
+    s_elementPathTypeMap["/FdoLongTransactionList/LongTransaction/@IsActive"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FdoLongTransactionList/LongTransaction/@IsFrozen"] = \
XML_DATA_TYPE_BOOLEAN; +    //FdoSpatialContextList-1.0.0.xsd
+    s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/@IsActive"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/XYTolerance"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/ZTolerance"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/Extent/LowerLeftCoordinate/X"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/Extent/LowerLeftCoordinate/Y"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/Extent/UpperRightCoordinate/X"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FdoSpatialContextList/SpatialContext/Extent/UpperRightCoordinate/Y"] \
= XML_DATA_TYPE_NUMBER; +    //FdoProviderCapabilities-1.1.0.xsd
+    s_elementPathTypeMap["/FeatureProviderCapabilities/Geometry/Dimensionality"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsLocking"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsTimeout"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsTransactions"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsLongTransactions"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsSQL"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsConfiguration"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Connection/SupportsSavePoint"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsInheritance"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsMultipleSchemas"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsObjectProperties"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsAssociationProperties"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsSchemaOverrides"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsNetworkModel"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsAutoIdGeneration"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsDataStoreScopeUniqueIdGeneration"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Schema/SupportsSchemaModification"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsParameters"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsTimeout"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsSelectExpressions"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsSelectFunctions"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsSelectDistinct"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsSelectOrdering"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Command/SupportsSelectGrouping"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Filter/SupportsGeodesicDistance"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Filter/SupportsNonLiteralGeometricOperations"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Raster/SupportsRaster"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Raster/SupportsStitching"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Raster/SupportsSubsampling"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Topology/SupportsTopology"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Topology/SupportsTopologicalHierarchy"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Topology/BreaksCurveCrossingsAutomatically"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Topology/ActivatesTopologyByArea"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderCapabilities/Topology/ConstrainsFeatureMovements"] \
= XML_DATA_TYPE_BOOLEAN; +    //FeatureProviderRegistry-1.0.0.xsd
+    s_elementPathTypeMap["/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty/@Required"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty/@Protected"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty/@Enumerable"] \
= XML_DATA_TYPE_BOOLEAN; +    //FeatureSource-1.0.0.xsd
+    s_elementPathTypeMap["/FeatureSource/Extension/AttributeRelate/ForceOneToOne"] = \
XML_DATA_TYPE_BOOLEAN; +    //LayerDefinition-2.4.0.xsd
+    s_elementPathTypeMap["/LayerDefinition/DrawingLayerDefinition/Opacity"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/DrawingLayerDefinition/MinScale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/DrawingLayerDefinition/MaxScale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/Opacity"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/MinScale"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/MaxScale"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/AreaTypeStyle/AreaRule/Label/AdvancedPlacement/ScaleLimit"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/AreaTypeStyle/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/LineTypeStyle/LineRule/Label/AdvancedPlacement/ScaleLimit"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/LineTypeStyle/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/Label/AdvancedPlacement/ScaleLimit"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/DisplayAsText"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/AllowOverpost"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/Label/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Mark/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Image/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Font/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Font/Bold"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Font/Italic"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Font/Underlined"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/W2D/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule/PointSymbolization2D/Block/MaintainAspect"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/VectorLayerDefinition/VectorScaleRange/CompositeTypeStyle/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/Opacity"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Label/AdvancedPlacement/ScaleLimit"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/RedBand/LowBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/RedBand/HighBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/RedBand/LowChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/RedBand/HighChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/GreenBand/LowBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/GreenBand/HighBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/GreenBand/LowChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/GreenBand/HighChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/BlueBand/LowBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/BlueBand/HighBand"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/BlueBand/LowChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/Color/Bands/BlueBand/HighChannel"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/HillShade/Azimuth"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/HillShade/Altitude"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/HillShade/ScaleFactor"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/BrightnessFactor"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule/ContrastFactor"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/SurfaceStyle/ZeroValue"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/SurfaceStyle/ScaleFactor"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/MinScale"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/MaxScale"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LayerDefinition/GridLayerDefinition/GridScaleRange/RebuildFactor"] \
= XML_DATA_TYPE_NUMBER; +    //LoadProcedure-2.2.0.xsd
+    s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GeoReferenceOverride/LocationX"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GeoReferenceOverride/LocationY"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GeoReferenceOverride/ScaleX"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GeoReferenceOverride/ScaleY"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/SubsampleFactor"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GenerateSpatialDataSources"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GenerateLayers"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GenerateMaps"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/RasterLoadProcedure/GenerateSymbolLibraries"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/Generalization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/ClosedPolylinesToPolygons"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/GenerateSpatialDataSources"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/GenerateLayers"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/GenerateMaps"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/GenerateSymbolLibraries"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/DwgLoadProcedure/LayerComponents/LayerComponent/Selected"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SdfLoadProcedure/Generalization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/SdfLoadProcedure/GenerateSpatialDataSources"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SdfLoadProcedure/GenerateLayers"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SdfLoadProcedure/GenerateMaps"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SdfLoadProcedure/GenerateSymbolLibraries"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SQLiteLoadProcedure/Generalization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/SQLiteLoadProcedure/GenerateSpatialDataSources"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SQLiteLoadProcedure/GenerateLayers"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SQLiteLoadProcedure/GenerateMaps"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/SQLiteLoadProcedure/GenerateSymbolLibraries"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/Generalization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/GenerateSpatialDataSources"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/GenerateLayers"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/GenerateMaps"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/GenerateSymbolLibraries"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/LoadProcedure/ShpLoadProcedure/ConvertToSdf"] = \
XML_DATA_TYPE_BOOLEAN; +    //MapDefinition-2.4.0.xsd
+    s_elementPathTypeMap["/MapDefinition/Extents/MinX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/MapDefinition/Extents/MinY"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/MapDefinition/Extents/MaxX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/MapDefinition/Extents/MaxY"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/FiniteDisplayScale"] = \
XML_DATA_TYPE_NUMBER; +    s_elementPathTypeMap["/MapDefinition/MapLayer/Selectable"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/MapLayer/ShowInLegend"] = XML_DATA_TYPE_BOOLEAN; \
+    s_elementPathTypeMap["/MapDefinition/MapLayer/ExpandInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/MapDefinition/MapLayer/Visible"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/MapLayerGroup/ShowInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/MapLayerGroup/ExpandInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/MapLayerGroup/Visible"] = XML_DATA_TYPE_BOOLEAN; \
+    s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/ExpandInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/Visible"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/BaseMapLayer/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/BaseMapLayer/ExpandInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/MapDefinition/BaseMapDefinition/BaseMapLayerGroup/BaseMapLayer/Visible"] \
= XML_DATA_TYPE_BOOLEAN; +    //PrintLayout-1.0.0.xsd
+    s_elementPathTypeMap["/PrintLayout/PageProperties/BackgroundColor/Red"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/PrintLayout/PageProperties/BackgroundColor/Blue"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/PrintLayout/PageProperties/BackgroundColor/Green"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowTitle"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowScaleBar"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowNorthArrow"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowURL"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowDateTime"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowCustomLogos"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/PrintLayout/LayoutProperties/ShowCustomText"] = \
XML_DATA_TYPE_BOOLEAN; +    //ProfileResult-2.4.0.xsd
+    s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/LayerCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/Scale"] = XML_DATA_TYPE_NUMBER; \
+    s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/CreateImageTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/Extents/MinX"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/Extents/MinY"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/Extents/MaxX"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderMap/Extents/MaxY"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderDynamicOverlay/LayerCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderDynamicOverlay/Scale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderDynamicOverlay/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderDynamicOverlay/CreateImageTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderLayer/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderLayer/ScaleRange/MinScale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderLayer/ScaleRange/MaxScale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderLayers/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderSelection/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderWatermark/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderWatermarks/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ProfileResult/ProfileRenderLabels/RenderTime"] = \
XML_DATA_TYPE_NUMBER; +    //ResourceList-1.0.0.xsd
+    s_elementPathTypeMap["/ResourceList/ResourceFolder/Depth"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ResourceList/ResourceFolder/NumberOfFolders"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ResourceList/ResourceFolder/NumberOfDocuments"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/ResourceList/ResourceDocument/Depth"] = XML_DATA_TYPE_NUMBER; \
+    s_elementPathTypeMap["/ResourceList/ResourceFolder/ResourceFolderHeader/Security/Inherited"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/ResourceList/ResourceDocument/ResourceDocumentHeader/Security/Inherited"] \
= XML_DATA_TYPE_BOOLEAN; +    //RuntimeMap-2.6.0.xsd
+    s_elementPathTypeMap["/RuntimeMap/DisplayDpi"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/RuntimeMap/Group/Type"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/RuntimeMap/Group/DisplayInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/RuntimeMap/Group/ExpandInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/RuntimeMap/Group/Visible"] = \
XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/RuntimeMap/Group/ActuallyVisible"] \
= XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/RuntimeMap/Layer/Type"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Layer/ScaleRange/MinScale"] = XML_DATA_TYPE_NUMBER; \
+    s_elementPathTypeMap["/RuntimeMap/Layer/ScaleRange/MaxScale"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Layer/ScaleRange/FeatureStyle/Type"] = \
XML_DATA_TYPE_NUMBER; +    s_elementPathTypeMap["/RuntimeMap/Layer/Selectable"] = \
XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/RuntimeMap/Layer/DisplayInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/RuntimeMap/Layer/ExpandInLegend"] = XML_DATA_TYPE_BOOLEAN; +   \
s_elementPathTypeMap["/RuntimeMap/Layer/Visible"] = XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/RuntimeMap/Layer/ActuallyVisible"] = XML_DATA_TYPE_BOOLEAN; +  \
s_elementPathTypeMap["/RuntimeMap/FiniteDisplayScale"] = XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/CoordinateSystem/MetersPerUnit"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Extents/LowerLeftCoordinate/X"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Extents/LowerLeftCoordinate/Y"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Extents/UpperRightCoordinate/X"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/RuntimeMap/Extents/UpperRightCoordinate/Y"] = \
XML_DATA_TYPE_NUMBER; +    //RuntimeMap-3.0.0.xsd
+    s_elementPathTypeMap["/RuntimeMap/TileWidth"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/RuntimeMap/TileHeight"] = XML_DATA_TYPE_NUMBER;
+    //SiteInformation-1.0.0.xsd
+    s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/AvailablePhysicalMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/TotalPhysicalMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/AvailableVirtualMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/SiteServer/OperatingSystem/TotalVirtualMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/AdminOperationsQueueCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/ClientOperationsQueueCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/SiteOperationsQueueCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/AverageOperationTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/CpuUtilization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/TotalOperationTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/ActiveConnections"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/TotalConnections"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/TotalOperationsProcessed"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Statistics/TotalOperationsReceived"] = \
XML_DATA_TYPE_NUMBER; +    s_elementPathTypeMap["/SiteInformation/Statistics/Uptime"] \
= XML_DATA_TYPE_NUMBER; +    //SiteInformation-2.2.0.xsd
+    s_elementPathTypeMap["/SiteInformation/Server/OperatingSystem/AvailablePhysicalMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/OperatingSystem/TotalPhysicalMemory"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/OperatingSystem/AvailableVirtualMemory"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/OperatingSystem/TotalVirtualMemory"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/AdminOperationsQueueCount"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/ClientOperationsQueueCount"] \
= XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/SiteOperationsQueueCount"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/AverageOperationTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/CpuUtilization"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/WorkingSet"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/VirtualMemory"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/TotalOperationTime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/ActiveConnections"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/TotalConnections"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/TotalOperationsProcessed"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/TotalOperationsReceived"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/Uptime"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/CacheSize"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/SiteInformation/Server/Statistics/CacheDroppedEntries"] = \
XML_DATA_TYPE_NUMBER; +    //UnmanagedDataList-1.0.0.xsd
+    s_elementPathTypeMap["/UnmanagedDataList/UnmanagedDataFolder/NumberOfFolders"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/UnmanagedDataList/UnmanagedDataFolder/NumberOfFiles"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/UnmanagedDataList/UnmanagedDataFolder/NumberOfFolders"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/UnmanagedDataList/UnmanagedDataFile/Size"] = \
XML_DATA_TYPE_NUMBER; +    //WebLayout-2.6.0.xsd
+    s_elementPathTypeMap["/WebLayout/PointSelectionBuffer"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/WebLayout/InformationPane/Width"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/WebLayout/InformationPane/LegendVisible"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/InformationPane/PropertiesVisible"] = \
XML_DATA_TYPE_BOOLEAN; +    s_elementPathTypeMap["/WebLayout/TaskPane/Width"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WebLayout/CommandSet/Command/MatchLimit"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WebLayout/CommandSet/Command/DisableIfSelectionEmpty"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/Map/InitialView/CenterX"] = XML_DATA_TYPE_NUMBER; +  \
s_elementPathTypeMap["/WebLayout/Map/InitialView/CenterY"] = XML_DATA_TYPE_NUMBER; +  \
s_elementPathTypeMap["/WebLayout/Map/InitialView/Scale"] = XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WebLayout/EnablePingServer"] = XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/ToolBar/Visible"] = XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/InformationPane/Visible"] = XML_DATA_TYPE_BOOLEAN; + \
s_elementPathTypeMap["/WebLayout/ContextMenu/Visible"] = XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/TaskPane/Visible"] = XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/WebLayout/TaskPane/TaskBar/Visible"] = XML_DATA_TYPE_BOOLEAN; \
+    s_elementPathTypeMap["/WebLayout/StatusBar/Visible"] = XML_DATA_TYPE_BOOLEAN; +  \
s_elementPathTypeMap["/WebLayout/ZoomControl/Visible"] = XML_DATA_TYPE_BOOLEAN; +    \
//WatermarkDefinition-2.4.0.xsd +    \
s_elementPathTypeMap["/WatermarkDefinition/Position/XYPosition/XPosition/Offset"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WatermarkDefinition/Position/XYPosition/YPosition/Offset"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WatermarkDefinition/Position/TilePosition/TileWidth"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WatermarkDefinition/Position/TilePosition/TileHeight"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WatermarkDefinition/Appearance/Transparency"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/WatermarkDefinition/Appearance/Rotation"] = \
XML_DATA_TYPE_NUMBER; +    //TileSetDefinition-3.0.0.xsd
+    s_elementPathTypeMap["/TileSetDefinition/Extents/MinX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/TileSetDefinition/Extents/MinY"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/TileSetDefinition/Extents/MaxX"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/TileSetDefinition/Extents/MaxY"] = XML_DATA_TYPE_NUMBER;
+    s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/Visible"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/ShowInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/ExpandInLegend"] = \
XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/BaseMapLayer/Selectable"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/BaseMapLayer/ShowInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    \
s_elementPathTypeMap["/TileSetDefinition/BaseMapLayerGroup/BaseMapLayer/ExpandInLegend"] \
= XML_DATA_TYPE_BOOLEAN; +    //Miscellaneous MapGuide response types that don't have \
a formal schema +    s_elementPathTypeMap["/SessionTimeout/Value"] = \
XML_DATA_TYPE_NUMBER; +    \
s_elementPathTypeMap["/FeatureInformation/SelectedFeatures/SelectedLayer/LayerMetadata/Property/Type"] \
= XML_DATA_TYPE_NUMBER; +
+    //FeatureSource-1.0.0.xsd
+    s_multiElementPaths.insert("/FeatureSource/Parameter");
+    s_multiElementPaths.insert("/FeatureSource/SupplementalSpatialContextInfo");
+    s_multiElementPaths.insert("/FeatureSource/Extension");
+    s_multiElementPaths.insert("/FeatureSource/Extension/CalculatedProperty");
+    s_multiElementPaths.insert("/FeatureSource/Extension/AttributeRelate");
+    s_multiElementPaths.insert("/FeatureSource/Extension/AttributeRelate/RelateProperty");
 +    //DrawingSource-1.0.0.xsd
+    s_multiElementPaths.insert("/DrawingSource/Sheet");
+    //LayerDefinition-2.4.0.xsd (schema has been additive, so this includes older \
versions as well) +    \
s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/PropertyMapping"); \
+    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/AreaTypeStyle/AreaRule");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/LineTypeStyle/LineRule");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/LineTypeStyle/LineRule/LineSymbolization2D");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/PointTypeStyle/PointRule");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/CompositeTypeStyle/CompositeRule");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRange/CompositeTypeStyle/CompositeRule/CompositeSymbolization/SymbolInstance");
 +    s_multiElementPaths.insert("/LayerDefinition/VectorLayerDefinition/VectorScaleRa \
nge/CompositeTypeStyle/CompositeRule/CompositeSymbolization/SymbolInstance/ParameterOverrides/Override");
 +    s_multiElementPaths.insert("/LayerDefinition/GridLayerDefinition/GridScaleRange");
 +    s_multiElementPaths.insert("/LayerDefinition/GridLayerDefinition/GridScaleRange/ColorStyle/ColorRule");
 +    //SymbolDefinition-2.4.0.xsd (schema has been additive, so this includes older \
versions as well) +    \
s_multiElementPaths.insert("/SimpleSymbolDefinition/ParameterDefinition/Parameter"); \
+    s_multiElementPaths.insert("/CompoundSymbolDefinition/SimpleSymbol"); +    \
s_multiElementPaths.insert("/SimpleSymbolDefinition/Graphics/Path"); +    \
s_multiElementPaths.insert("/SimpleSymbolDefinition/Graphics/Image"); +    \
s_multiElementPaths.insert("/SimpleSymbolDefinition/Graphics/Text"); +    \
//MapDefinition-2.4.0.xsd (schema has been additive, so this includes older versions \
as well) +    s_multiElementPaths.insert("/MapDefinition/MapLayer");
+    s_multiElementPaths.insert("/MapDefinition/MapLayerGroup");
+    s_multiElementPaths.insert("/MapDefinition/BaseMapDefinition/BaseLayerGroup");
+    s_multiElementPaths.insert("/MapDefinition/BaseMapDefinition/BaseLayerGroup/BaseMapLayer");
 +    s_multiElementPaths.insert("/MapDefinition/Watermarks/Watermark");
+    //WebLayout-2.6.0.xsd (schema has been additive, so this includes older versions \
as well) +    s_multiElementPaths.insert("/WebLayout/ToolBar/Button");
+    s_multiElementPaths.insert("/WebLayout/ToolBar/Button/SubItem");
+    s_multiElementPaths.insert("/WebLayout/ContextMenu/MenuItem");
+    s_multiElementPaths.insert("/WebLayout/ContextMenu/MenuItem/SubItem");
+    s_multiElementPaths.insert("/WebLayout/TaskPane/TaskBar/MenuButton");
+    s_multiElementPaths.insert("/WebLayout/CommandSet/Command");
+    //LoadProcedure-2.2.0.xsd (schema has been additive, so this includes older \
versions as well) +    \
s_multiElementPaths.insert("/LoadProcedure/SdfLoadProcedure/SourceFile"); +    \
s_multiElementPaths.insert("/LoadProcedure/SdfLoadProcedure/ResourceId"); +    \
s_multiElementPaths.insert("/LoadProcedure/DwfLoadProcedure/SourceFile"); +    \
s_multiElementPaths.insert("/LoadProcedure/DwfLoadProcedure/ResourceId"); +    \
s_multiElementPaths.insert("/LoadProcedure/ShpLoadProcedure/SourceFile"); +    \
s_multiElementPaths.insert("/LoadProcedure/ShpLoadProcedure/ResourceId"); +    \
s_multiElementPaths.insert("/LoadProcedure/DwgLoadProcedure/SourceFile"); +    \
s_multiElementPaths.insert("/LoadProcedure/DwgLoadProcedure/ResourceId"); +    \
s_multiElementPaths.insert("/LoadProcedure/DwgLoadProcedure/FileComponents/FileComponent");
 +    s_multiElementPaths.insert("/LoadProcedure/DwgLoadProcedure/LayerComponents/LayerComponent");
 +    s_multiElementPaths.insert("/LoadProcedure/RasterLoadProcedure/SourceFile");
+    s_multiElementPaths.insert("/LoadProcedure/RasterLoadProcedure/ResourceId");
+    s_multiElementPaths.insert("/LoadProcedure/RasterLoadProcedure/GeoReferenceOverride");
 +    s_multiElementPaths.insert("/LoadProcedure/SQLiteLoadProcedure/SourceFile");
+    s_multiElementPaths.insert("/LoadProcedure/SQLiteLoadProcedure/ResourceId");
+    //PrintLayout-1.0.0.xsd
+    s_multiElementPaths.insert("/PrintLayout/CustomLogos/Logo");
+    s_multiElementPaths.insert("/PrintLayout/CustomText/Text");
+    //ApplicationDefinition-1.0.0.xsd
+    s_multiElementPaths.insert("/ApplicationDefinition/WidgetSet");
+    s_multiElementPaths.insert("/ApplicationDefinition/WidgetSet/Container");
+    s_multiElementPaths.insert("/ApplicationDefinition/WidgetSet/Container/Item");
+    s_multiElementPaths.insert("/ApplicationDefinition/WidgetSet/Container/Item/Item");
 +    //s_multiElementPaths.insert("/ApplicationDefinition/WidgetSet/Widget" => \
"abcd1234", +    s_multiElementPaths.insert("/ApplicationDefinition/MapSet/MapGroup");
 +    s_multiElementPaths.insert("/ApplicationDefinition/MapSet/MapGroup/Map");
+    //ApplicationDefinitionInfo-1.0.0.xsd
+    s_multiElementPaths.insert("/ApplicationDefinitionWidgetInfoSet/WidgetInfo");
+    s_multiElementPaths.insert("/ApplicationDefinitionWidgetInfoSet/WidgetInfo/ContainableBy");
 +    s_multiElementPaths.insert("/ApplicationDefinitionWidgetInfoSet/WidgetInfo/Parameter");
 +    s_multiElementPaths.insert("/ApplicationDefinitionWidgetInfoSet/WidgetInfo/Parameter/AllowedValue");
 +    s_multiElementPaths.insert("/ApplicationDefinitionContainerInfoSet/ContainerInfo");
 +    s_multiElementPaths.insert("/ApplicationDefinitionTemplateInfoSet/TemplateInfo");
 +    s_multiElementPaths.insert("/ApplicationDefinitionTemplateInfoSet/TemplateInfo/Panel");
 +    //BatchPropertyCollection-1.0.0.xsd
+    s_multiElementPaths.insert("/BatchPropertyCollection/PropertyCollection");
+    s_multiElementPaths.insert("/BatchPropertyCollection/PropertyCollection/Property");
 +    //DataStoreList-1.0.0.xsd
+    s_multiElementPaths.insert("/DataStoreList/DataStore");
+    //DrawingSectionList-1.0.0.xsd
+    s_multiElementPaths.insert("/DrawingSectionList/Section");
+    //DrawingSectionResourceList-1.0.0.xsd
+    s_multiElementPaths.insert("/DrawingSectionResourceList/SectionResource");
+    //FdoLongTransactionList-1.0.0.xsd
+    s_multiElementPaths.insert("/FdoLongTransactionList/LongTransaction");
+    //FdoProviderCapabilities-1.0.0.xsd
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Connection/SpatialContextExtent/Type");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Schema/Class/Type");
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Schema/Data/Type");
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Command/SupportedCommands/Type");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Filter/Condition/Type");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Filter/Spatial/Operation");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Filter/Distance/Operation");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/Type/Name");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefinitionList/FunctionDefinition");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefinitionList/FunctionDefinition/ArgumentDefinitionList/ArgumentDefinition");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Geometry/Types/Type");
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Geometry/Components/Type");
 +    //FdoProviderCapabilities-1.1.0.xsd
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Schema/SupportedAutoGeneratedTypes");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefi \
nitionList/FunctionDefinition/SignatureDefinitionCollection/SignatureDefinition"); +  \
s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefinition \
List/FunctionDefinition/SignatureDefinitionCollection/SignatureDefinition/ArgumentDefinitionList/ArgumentDefinition");
 +    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefi \
nitionList/FunctionDefinition/SignatureDefinitionCollection/SignatureDefinition/ArgumentDefinitionList/ArgumentDefinition/PropertyValueConstraintList/Value");
 +    //FdoSpatialContextList-1.0.0.xsd
+    s_multiElementPaths.insert("/FdoSpatialContextList/SpatialContext");
+    //FeatureProviderRegistry-1.0.0.xsd
+    s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider");
+    s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty");
 +    s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty/Value");
 +    //Group-1.0.0.xsd
+    s_multiElementPaths.insert("/Group/Users/User");
+    //GroupList-1.0.0.xsd
+    s_multiElementPaths.insert("/GroupList/Group");
+    //ProfileResult-2.4.0.xsd
+    s_multiElementPaths.insert("/ProfileResult/ProfileRenderMap/ProfileRenderLayers/ProfileRenderLayer");
 +    s_multiElementPaths.insert("/ProfileResult/ProfileRenderMap/ProfileRenderSelection/ProfileSelectedRenderLayer");
 +    s_multiElementPaths.insert("/ProfileResult/ProfileRenderMap/ProfileRenderWatermarks/ProfileRenderWatermark");
 +    //RepositoryList-1.0.0.xsd
+    s_multiElementPaths.insert("/RepositoryList/Repository");
+    //ResourceDataList-1.0.0.xsd
+    s_multiElementPaths.insert("/ResourceDataList/ResourceData");
+    //ResourceDocumentHeader-1.0.0.xsd
+    s_multiElementPaths.insert("/ResourceDocumentHeader/Metadata/Simple/Property");
+    //ResourceList-1.0.0.xsd
+    s_multiElementPaths.insert("/ResourceList/ResourceFolder");
+    s_multiElementPaths.insert("/ResourceList/ResourceFolder/ResourceFolderHeader/Security/Users/User"); \
//ResourceSecurity-1.0.0.xsd +    \
s_multiElementPaths.insert("/ResourceList/ResourceFolder/ResourceFolderHeader/Security/Groups/Group"); \
//ResourceSecurity-1.0.0.xsd +    \
s_multiElementPaths.insert("/ResourceList/ResourceDocument"); +    \
s_multiElementPaths.insert("/ResourceList/ResourceDocument/ResourceDocumentHeader/Security/Users/User"); \
//ResourceSecurity-1.0.0.xsd +    \
s_multiElementPaths.insert("/ResourceList/ResourceDocument/ResourceDocumentHeader/Security/Groups/Group"); \
//ResourceSecurity-1.0.0.xsd +    \
s_multiElementPaths.insert("/ResourceList/ResourceDocument/ResourceDocumentHeader/Metadata/Simple/Property");
 +    //ResourcePackageManifest-1.0.0.xsd
+    s_multiElementPaths.insert("/ResourcePackageManifest/Operations/Operation");
+    s_multiElementPaths.insert("/ResourcePackageManifest/Operations/Operation/Parameters/Parameter");
 +    //ResourceReferenceList-1.0.0.xsd
+    s_multiElementPaths.insert("/ResourceReferenceList/ResourceId");
+    //RuntimeMap-2.6.0.xsd
+    s_multiElementPaths.insert("/RuntimeMap/Group");
+    s_multiElementPaths.insert("/RuntimeMap/Layer");
+    s_multiElementPaths.insert("/RuntimeMap/Layer/ScaleRange");
+    s_multiElementPaths.insert("/RuntimeMap/Layer/ScaleRange/FeatureStyle");
+    s_multiElementPaths.insert("/RuntimeMap/Layer/ScaleRange/FeatureStyle/Rule");
+    s_multiElementPaths.insert("/RuntimeMap/FiniteDisplayScale");
+    //SelectAggregate-1.0.0.xsd
+    s_multiElementPaths.insert("/PropertySet/PropertyDefinitions/PropertyDefinition");
 +    s_multiElementPaths.insert("/PropertySet/Properties/PropertyCollection");
+    s_multiElementPaths.insert("/PropertySet/Properties/PropertyCollection/Property");
 +    //ServerList-1.0.0.xsd
+    s_multiElementPaths.insert("/ServerList/Server");
+    //SqlSelect-1.0.0.xsd
+    s_multiElementPaths.insert("/RowSet/ColumnDefinitions");
+    s_multiElementPaths.insert("/RowSet/ColumnDefinitions/Column");
+    s_multiElementPaths.insert("/RowSet/Rows/Row");
+    s_multiElementPaths.insert("/RowSet/Rows/Row/Column");
+    //StringCollection-1.0.0.xsd
+    s_multiElementPaths.insert("/StringCollection/Item");
+    //TileSetDefinition-3.0.0.xsd
+    s_multiElementPaths.insert("/TileSetDefinition/TileStoreParameters/Parameter");
+    s_multiElementPaths.insert("/TileSetDefinition/BaseMapLayerGroup");
+    s_multiElementPaths.insert("/TileSetDefinition/BaseMapLayerGroup/BaseMapLayer");
+    //UnmanagedDataList-1.0.0.xsd
+    s_multiElementPaths.insert("/UnmanagedDataList/UnmanagedDataFolder");
+    s_multiElementPaths.insert("/UnmanagedDataList/UnmanagedDataFile");
+    //UserList-1.0.0.xsd
+    s_multiElementPaths.insert("/UserList/User");
+    s_multiElementPaths.insert("/UserList/Group");
+    //Miscellaneous MapGuide response types that don't have a formal schema
+    s_multiElementPaths.insert("/FeatureInformation/FeatureSet/Layer");
+    s_multiElementPaths.insert("/FeatureInformation/FeatureSet/Layer/Class/ID");
+    s_multiElementPaths.insert("/FeatureInformation/SelectedFeatures/SelectedLayer");
 +    s_multiElementPaths.insert("/FeatureInformation/SelectedFeatures/SelectedLayer/LayerMetadata/Property");
 +    s_multiElementPaths.insert("/FeatureInformation/SelectedFeatures/SelectedLayer/Feature");
 +    s_multiElementPaths.insert("/FeatureInformation/SelectedFeatures/SelectedLayer/Feature/Property");
 +
+    return true;
+}
\ No newline at end of file

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.h
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.h	2015-11-07 15:51:29 \
                UTC (rev 8818)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/XmlJsonConvert.h	2015-11-07 17:19:53 \
UTC (rev 8819) @@ -22,6 +22,10 @@
 #include "System/XmlUtil.h"
 #include "JsonDoc.h"
 
+#define XML_DATA_TYPE_NUMBER 1
+#define XML_DATA_TYPE_BOOLEAN 2
+#define XML_DATA_TYPE_STRING 3
+
 /// \cond INTERNAL
 class MgXmlJsonConvert
 {
@@ -36,19 +40,27 @@
 
     /// Methods
 public:
-    void ToJson(Ptr<MgByteReader> &byteReader);
-    void ToJson(const string &xmlString, string &jsonString);
+    void ToJson(Ptr<MgByteReader> &byteReader, bool bClean = false);
+    void ToJson(const string &xmlString, string &jsonString, bool bClean = false);
 
 private:
-    void XmlToJsonNode(DOMNode *node);
+    void XmlToJsonNode(DOMNode *node, bool bClean = false);
     bool ValidateTextContent(const string &textContent);
     void ProcessObjectNode(DOMNode *node);
     void ProcessArrayNode(int index, DOMNode *node);
 
+    static bool GetElementPath(DOMNode* node, string& path, const XMLCh* suffix = \
L""); +    static bool GetElementType(DOMNode* node, int& type, const XMLCh* suffix = \
L""); +    static bool IsMultiple(DOMNode* node, bool& isMultiple, const XMLCh* \
suffix = L"");  /// Data Members
 private:
     MgXmlUtil m_xmlUtil;
     MgJsonDoc m_jsonDoc;
+
+private:
+    static bool Initialize();
+private:
+    static bool m_isInitialized;
 };
 /// \endcond
 

_______________________________________________
mapguide-commits mailing list
mapguide-commits@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic