encode " and '

svn path=/trunk/; revision=11000
This commit is contained in:
Martin Fuchs 2004-09-23 16:09:15 +00:00
parent d774499bf8
commit 62c06f1198
2 changed files with 18 additions and 5 deletions

View file

@ -256,6 +256,14 @@ std::string EncodeXMLString(const XS_String& str)
*o++ = '&'; *o++ = 'g'; *o++ = 't'; *o++ = ';';
break;
case '"':
*o++ = '&'; *o++ = 'q'; *o++ = 'u'; *o++ = 'o'; *o++ = 't'; *o++ = ';';
break;
case '\'':
*o++ = '&'; *o++ = 'a'; *o++ = 'p'; *o++ = 'o'; *o++ = 's'; *o++ = ';';
break;
default:
*o++ = *p;
}
@ -275,15 +283,21 @@ XS_String DecodeXMLString(const XS_String& str)
for(LPCXSSTR p=s; *p; ++p)
if (*p == '&') {
if (!XS_nicmp(p+1, XS_TEXT("amp;"), 4)) {
*o++ = '&';
p += 4;
} else if (!XS_nicmp(p+1, XS_TEXT("lt;"), 3)) {
if (!XS_nicmp(p+1, XS_TEXT("lt;"), 3)) {
*o++ = '<';
p += 3;
} else if (!XS_nicmp(p+1, XS_TEXT("gt;"), 3)) {
*o++ = '>';
p += 3;
} else if (!XS_nicmp(p+1, XS_TEXT("amp;"), 4)) {
*o++ = '&';
p += 4;
} else if (!XS_nicmp(p+1, XS_TEXT("quot;"), 5)) {
*o++ = '"';
p += 5;
} else if (!XS_nicmp(p+1, XS_TEXT("apos;"), 5)) {
*o++ = '\'';
p += 5;
} else
*o++ = *p;
} else

View file

@ -75,7 +75,6 @@ namespace XMLStorage {
#ifdef __GNUC__
#define XS_STRING_UTF8 // The W32API std::wstring implementation of stdlibc++ is unusable, so use UTF8 encoded strings with std::string instead
#endif
#define XS_STRING_UTF8//@@
#ifdef XS_STRING_UTF8
#define XS_CHAR char