XML 特殊字符 處理 c++
在XML文件中,如果內容包含一些特殊字符會導致XML文件無法解析。
1. 可以對特殊字符直接進行轉義
以下5個字符爲需要進行轉義的字符
字符 | 轉義後 | 編碼 |
& | & | & |
' | ' | ' |
" | " | " |
> | > | > |
< | < | < |
代碼如下:
//函數將XML 中的特殊字符 & 轉換爲 & //可擴展判斷 typedef unsigned char BYTE; void XMLEncodeString(char *&desBuffer, int &dSize, char *srcBuffer, const int &sSize) { char *m_XmlSpeChar[256]; m_XmlSpeChar[34] = """; //" 34 m_XmlSpeChar[38] = "&"; //& 38 m_XmlSpeChar[39] = "'"; //' 39 m_XmlSpeChar[60] = "<"; //< 60 m_XmlSpeChar[62] = ">"; //> 62 dSize = 0; string tempDesStr; for(int i = 0; i < sSize; i++) { BYTE tempB = (BYTE)srcBuffer[i]; if ( tempB == 38 ) { tempDesStr += m_XmlSpeChar[tempB]; dSize += strlen(m_XmlSpeChar[tempB]); } else { tempDesStr += srcBuffer[i]; dSize++; } } desBuffer = (char *)malloc(sizeof(char)*dSize); memcpy(desBuffer,tempDesStr.c_str(),dSize); }
2. 將內容放至CDATA中。
CDATA 以"<![CDATA[" 標記開始,以"]]>"標記結束 例如:
<?xml version="1.0" encoding="utf-8" ?> <SQL> <![CDATA[SELECT * FROM Account WHERE ID > 5]]> </SQL>