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>
7327



被折叠的 条评论
为什么被折叠?



