You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by su...@apache.org on 2004/04/09 14:43:39 UTC

cvs commit: ws-axis/c/src/soap URIMapping.cpp SoapParserXerces.h SoapParserXerces.cpp SoapParserExpat.h SoapParserExpat.cpp SoapDeSerializer.cpp

susantha    2004/04/09 05:43:39

  Modified:    c/src/soap URIMapping.cpp SoapParserXerces.h
                        SoapParserXerces.cpp SoapParserExpat.h
                        SoapParserExpat.cpp SoapDeSerializer.cpp
  Log:
  1. Added white space ignoring support that is need to interoperate with Axis Java :)
  2. Added SOAP 1.1 encoding URI to deserializer to interoperate with Axis Java
  
  Revision  Changes    Path
  1.9       +1 -0      ws-axis/c/src/soap/URIMapping.cpp
  
  Index: URIMapping.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/URIMapping.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- URIMapping.cpp	8 Apr 2004 12:34:11 -0000	1.8
  +++ URIMapping.cpp	9 Apr 2004 12:43:39 -0000	1.9
  @@ -45,6 +45,7 @@
           m_sURIMap[__TRC("http://www.w3.org/2001/XMLSchema-instance")] = 
               URI_XSI;
           m_sURIMap[__TRC("http://www.w3.org/2001/06/soap-encoding")] = URI_ENC;
  +		m_sURIMap[__TRC("http://schemas.xmlsoap.org/soap/encoding/")] = URI_ENC;
           m_sURIMap[__TRC("http://schemas.xmlsoap.org/soap/envelope/")] = 
               URI_ENVELOPE;
           m_bInit = true;
  
  
  
  1.5       +1 -1      ws-axis/c/src/soap/SoapParserXerces.h
  
  Index: SoapParserXerces.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapParserXerces.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SoapParserXerces.h	8 Apr 2004 12:24:45 -0000	1.4
  +++ SoapParserXerces.h	9 Apr 2004 12:43:39 -0000	1.5
  @@ -52,7 +52,7 @@
       int Init();
       const XML_Ch* GetNS4Prefix(const XML_Ch* prefix);
       int GetStatus();
  -    const AnyElement* Next();
  +    const AnyElement* Next(bool isCharData=false);
       AXIS_TRANSPORT_STATUS GetTransportStatus(){ return m_nTransportStatus;};
       void SetTransportStatus(AXIS_TRANSPORT_STATUS nStatus)
       { m_nTransportStatus = nStatus;};
  
  
  
  1.5       +10 -2     ws-axis/c/src/soap/SoapParserXerces.cpp
  
  Index: SoapParserXerces.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapParserXerces.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SoapParserXerces.cpp	8 Apr 2004 12:24:45 -0000	1.4
  +++ SoapParserXerces.cpp	9 Apr 2004 12:43:39 -0000	1.5
  @@ -72,7 +72,7 @@
       return m_nStatus;
   }
   
  -const AnyElement* SoapParserXerces::Next()
  +const AnyElement* SoapParserXerces::Next(bool isCharData)
   {
   
       if(!firstParsed)
  @@ -86,7 +86,15 @@
       {
           m_pParser->parseNext(token);
           AnyElement* elem = Xhandler.getAnyElement();
  -        if (elem) return elem;
  +        if (elem) 
  +		{
  +			if (!isCharData && (CHARACTER_ELEMENT == elem->m_type))
  +			{ /* ignorable white space */
  +				Xhandler.freeElement();
  +				continue;		
  +			}			
  +			return elem;
  +		}
           else if (AXIS_FAIL == Xhandler.GetStatus()) return NULL; 
       }
   }
  
  
  
  1.6       +1 -1      ws-axis/c/src/soap/SoapParserExpat.h
  
  Index: SoapParserExpat.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapParserExpat.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SoapParserExpat.h	8 Apr 2004 11:26:07 -0000	1.5
  +++ SoapParserExpat.h	9 Apr 2004 12:43:39 -0000	1.6
  @@ -83,7 +83,7 @@
       int Init();
       const XML_Ch* GetNS4Prefix(const XML_Ch* prefix);
       int GetStatus();
  -    const AnyElement* Next();
  +    const AnyElement* Next(bool isCharData=false);
       AXIS_TRANSPORT_STATUS GetTransportStatus(){ return m_nTransportStatus;};
       void SetTransportStatus(AXIS_TRANSPORT_STATUS nStatus)
       { m_nTransportStatus = nStatus;};
  
  
  
  1.15      +8 -1      ws-axis/c/src/soap/SoapParserExpat.cpp
  
  Index: SoapParserExpat.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapParserExpat.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SoapParserExpat.cpp	8 Apr 2004 11:26:07 -0000	1.14
  +++ SoapParserExpat.cpp	9 Apr 2004 12:43:39 -0000	1.15
  @@ -137,8 +137,9 @@
   /**
    * This method returning NULL means that there is something wrong with the
    * stream and hence parsing should be finished or aborted.
  + * @param isCharData - say that Deserializer is expecting a character data event.
    */
  -const AnyElement* SoapParserExpat::Next()
  +const AnyElement* SoapParserExpat::Next(bool isCharData)
   {
       int nStatus = TRANSPORT_IN_PROGRESS;
       if (m_pLastEvent)
  @@ -204,6 +205,12 @@
                       m_Element.m_pchNameOrValue = m_pLastEvent->
                           m_NameOrValue.c_str();
                       m_Element.m_type = type;
  +					if (!isCharData && (CHARACTER_ELEMENT == type))
  +					{ /* ignorable white space */
  +						delete m_pLastEvent;
  +						m_pLastEvent = NULL;
  +						break;						
  +					}
                       return &m_Element;
                   case START_PREFIX:
                       m_NsStack[m_pLastEvent->m_NameOrValue] = 
  
  
  
  1.39      +48 -48    ws-axis/c/src/soap/SoapDeSerializer.cpp
  
  Index: SoapDeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- SoapDeSerializer.cpp	8 Apr 2004 09:40:27 -0000	1.38
  +++ SoapDeSerializer.cpp	9 Apr 2004 12:43:39 -0000	1.39
  @@ -577,7 +577,7 @@
   {\
       /* wrapper node without type info  Ex: <item>*/\
       m_pNode = m_pParser->Next(); \
  -    m_pNode = m_pParser->Next(); /* charactor node */\
  +    m_pNode = m_pParser->Next(true); /* charactor node */\
       if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))\
       {\
           ((cpp_type*)Array.m_Array)[nIndex] = \
  @@ -617,7 +617,7 @@
                       }\
                       if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))\
                       {\
  -                        m_pNode = m_pParser->Next(); /* charactor node */\
  +                        m_pNode = m_pParser->Next(true); /* charactor node */\
                           if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))\
                           {\
                               ((cpp_type*)Array.m_Array)[nIndex] = \
  @@ -698,7 +698,7 @@
                   {
                       m_pNode = m_pParser->Next();
                       /* wrapper node without type info  Ex: <item>*/
  -                    m_pNode = m_pParser->Next(); /* charactor node */
  +                    m_pNode = m_pParser->Next(true); /* charactor node */
                       if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
                       {
                           ((int*)Array.m_Array)[nIndex] = strtol(m_pNode->
  @@ -780,7 +780,7 @@
                       }
                       if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
                       {
  -                        m_pNode = m_pParser->Next(); /* charactor node */
  +                        m_pNode = m_pParser->Next(true); /* charactor node */
                           if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
                           {
                               ((int*)Array.m_Array)[nIndex] = strtol(m_pNode->
  @@ -1237,7 +1237,7 @@
           if (!m_pNode) return ret;
           if (XSD_BOOLEAN == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = (0 == strcmp(m_pNode->m_pchNameOrValue, "true")) 
  @@ -1262,7 +1262,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   /* Some web services server returns 1 */
  @@ -1308,7 +1308,7 @@
           if (!m_pNode) return ret;
           if (XSD_INT == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1332,7 +1332,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1377,7 +1377,7 @@
           if (!m_pNode) return ret;
           if (XSD_UNSIGNEDINT == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1401,7 +1401,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1444,7 +1444,7 @@
           if (!m_pNode) return ret;
           if (XSD_SHORT == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1468,7 +1468,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1514,7 +1514,7 @@
           if (!m_pNode) return ret;
           if (XSD_UNSIGNEDSHORT == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1538,7 +1538,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1581,7 +1581,7 @@
           if (!m_pNode) return ret;
           if (XSD_BYTE == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1605,7 +1605,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1648,7 +1648,7 @@
           if (!m_pNode) return ret;
           if (XSD_UNSIGNEDBYTE == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1672,7 +1672,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1715,7 +1715,7 @@
           if (!m_pNode) return ret;
           if (XSD_LONG == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1739,7 +1739,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1782,7 +1782,7 @@
           if (!m_pNode) return ret;
           if (XSD_INTEGER == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1806,7 +1806,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtol(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1850,7 +1850,7 @@
           if (!m_pNode) return ret;
           if (XSD_UNSIGNEDLONG == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1874,7 +1874,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtoul(m_pNode->m_pchNameOrValue, &m_pEndptr, 10);
  @@ -1917,7 +1917,7 @@
           if (!m_pNode) return ret;
           if (XSD_FLOAT == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -1941,7 +1941,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -1984,7 +1984,7 @@
           if (!m_pNode) return ret;
           if (XSD_DECIMAL == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -2008,7 +2008,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -2051,7 +2051,7 @@
           if (!m_pNode) return ret;
           if (XSD_DECIMAL == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -2075,7 +2075,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strtod(m_pNode->m_pchNameOrValue, &m_pEndptr);
  @@ -2118,7 +2118,7 @@
           if (!m_pNode) return ret;
           if (XSD_STRING == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2143,7 +2143,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2187,7 +2187,7 @@
           if (!m_pNode) return ret;
           if (XSD_ANYURI == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2212,7 +2212,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2247,7 +2247,7 @@
           if (!m_pNode) return ret;
           if (XSD_QNAME == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2272,7 +2272,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = strdup(m_pNode->m_pchNameOrValue);
  @@ -2308,7 +2308,7 @@
           if (!m_pNode) return ret;
           if (XSD_HEXBINARY == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = DecodeFromHexBinary(m_pNode->m_pchNameOrValue);
  @@ -2333,7 +2333,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = DecodeFromHexBinary(m_pNode->m_pchNameOrValue);
  @@ -2396,7 +2396,7 @@
           if (!m_pNode) return ret;
           if (XSD_BASE64BINARY == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = DecodeFromBase64Binary(m_pNode->m_pchNameOrValue);
  @@ -2421,7 +2421,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = DecodeFromBase64Binary(m_pNode->m_pchNameOrValue);
  @@ -2456,7 +2456,7 @@
           if (!m_pNode) return ret;
           if (XSD_DATETIME == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, XSD_DATETIME);
  @@ -2493,7 +2493,7 @@
                       return ret;
                   }
               }            
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, 
  @@ -2528,7 +2528,7 @@
           if (!m_pNode) return ret;
           if (XSD_DATE == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, 
  @@ -2566,7 +2566,7 @@
                       return ret;
                   }
               }            
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, 
  @@ -2601,7 +2601,7 @@
           if (!m_pNode) return ret;
           if (XSD_TIME == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, 
  @@ -2639,7 +2639,7 @@
                       return ret;
                   }
               }            
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::Deserialize(m_pNode->m_pchNameOrValue, 
  @@ -2674,7 +2674,7 @@
           if (!m_pNode) return ret;
           if (XSD_DURATION == GetXSDType(m_pNode))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::DeserializeDuration(m_pNode->m_pchNameOrValue, 
  @@ -2699,7 +2699,7 @@
           if (!m_pNode) return ret;
           if (0 == strcmp(pName, m_pNode->m_pchNameOrValue))
           {
  -            m_pNode = m_pParser->Next(); /* charactor node */
  +            m_pNode = m_pParser->Next(true); /* charactor node */
               if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type))
               {
                   ret = AxisTime::DeserializeDuration(m_pNode->m_pchNameOrValue,