2013年7月5日 星期五

XML特殊字元處理 (C++)

在使用XML當作資料傳遞時,最常犯的錯就是自己產生的XML內容包含了一些特殊字元,導致無法正常顯示XML。特殊字元包括:

'
"
&
<
>

當遇到以上幾個字元時,必須做以下轉換:
&apos;
&quot;
&amp;
&lt;
&gt;

以C++寫法為例,輸入一個string型態的字串,回傳已經做好特殊字元取代的字串

std::string XmlEscape(const std::string &rstrString)
{
ostringstream ossEscapeString;
unsigned char ch;

for(string::const_iterator iter = rstrString.begin(); iter != rstrString.end(); iter++ )
{
ch = static_cast(*iter);

switch(ch)
{
case '&':
ossEscapeString << "&amp;";
break;
case '<':
ossEscapeString << "&lt;";
break;
case '>':
ossEscapeString << "&gt;";
break;
case '"':
ossEscapeString << "&quot;";
break;
case '\'':
ossEscapeString << "&apos;";
break;
default:
ossEscapeString << ch;
break;
}
}

return ossEscapeString.str();
}

沒有留言:

張貼留言