[mapguide-commits] r8819 - sandbox/jng/clean_json/Web/src/HttpHandler

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Nov 7 09:19:53 PST 2015


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/VectorScaleRange/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/FunctionDefinitionList/FunctionDefinition/SignatureDefinitionCollection/SignatureDefinition");
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefinitionList/FunctionDefinition/SignatureDefinitionCollection/SignatureDefinition/ArgumentDefinitionList/ArgumentDefinition");
+    s_multiElementPaths.insert("/FeatureProviderCapabilities/Expression/FunctionDefinitionList/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
 



More information about the mapguide-commits mailing list