XML_Util.cpp

Go to the documentation of this file.
00001 // XML_Util.cpp,v 1.1 2005/05/23 18:10:38 michel_j Exp
00002 
00003 #include "ACEXML/common/XML_Util.h"
00004 
00005 static const ACEXML_Char ESCAPED_AMP[] = ACE_TEXT("&");
00006 static const ACEXML_Char ESCAPED_LESS[] = ACE_TEXT("<");
00007 static const ACEXML_Char ESCAPED_GREATER[] = ACE_TEXT(">");
00008 static const ACEXML_Char ESCAPED_APOS[] = ACE_TEXT("'");
00009 static const ACEXML_Char ESCAPED_QUOTE[] = ACE_TEXT(""");
00010 
00011 #define CSTRLEN(x) ((sizeof(x) / sizeof(ACEXML_Char)) - 1)
00012 
00013 ACEXML_String ACEXML_escape_string(const ACEXML_String& str)
00014 {
00015   ACEXML_String ret(str.length ());
00016   ACEXML_escape_string(str, ret);
00017   return ret;
00018 }
00019 
00020 void ACEXML_escape_string(const ACEXML_String& in, ACEXML_String& out)
00021 {
00022   size_t len = in.length ();
00023   out.clear();
00024   for (size_t stridx = 0; stridx < len; ++stridx)
00025   {
00026     switch (in[stridx]) {
00027     case '&':
00028       out.append(ESCAPED_AMP, CSTRLEN(ESCAPED_AMP));
00029       break;
00030     case '<':
00031       out.append(ESCAPED_LESS, CSTRLEN(ESCAPED_LESS));
00032       break;
00033     case '>':
00034       out.append(ESCAPED_GREATER, CSTRLEN(ESCAPED_GREATER));
00035       break;
00036     case '\'':
00037       out.append(ESCAPED_APOS, CSTRLEN(ESCAPED_APOS));
00038       break;
00039     case '\"':
00040       out.append(ESCAPED_QUOTE, CSTRLEN(ESCAPED_QUOTE));
00041       break;
00042     default:
00043       out += in[stridx];
00044     }
00045   }
00046 }

Generated on Thu Nov 9 11:45:40 2006 for ACEXML by doxygen 1.3.6