关于XML的解析问题

cyberhui 2007-12-25 02:27:17
最近在解析XML出现了一点问题,请各位帮帮忙。
比如XML文件内容如下
<?xml version="1.0"?>
<PLAY>
<TITLE>The Tragedy of Antony and Cleopatra</TITLE>
</PLAY>
这个解析都没问题,但如果通过另一个网页传过来时,收到的包里都把< > / : 等等符号都转换成了%加上对应的16进制ASCII值。
比如prov_url=http://127.0.0.1:8007/Reciever就转换成了prov_url=http%3A%2F%2F127.0.0.1%3A8007%2FReciever。
我怎样将收到的包里快速的将这些再次转一次呢?望 各位高手指教!
...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cad_vc 2007-12-27
  • 打赏
  • 举报
回复
void UnescapeURL(char* word)
{
unsigned int i,j;
for(i = 0, j = 0; i < strlen(word); i++)
{
if(word[i] == '%')
{
if(word[i+1] >= 'a' && word[i+1] <= 'f')
{
word[j] = word[i+1] - 'a' + 10;
}
else if(word[i+1] >= 'A' && word[i+1] <= 'F')
{
word[j] = word[i+1] - 'A' + 10;
}
else if(word[i+1] >= '0' && word[i+1] <= '9')
{
word[j] = word[i+1] - '0';
}
else
{
word[j] = '%';
word[j+1] = word[i+1];
j += 2;
i++;
continue;
}

word[j] *= 16;

if(word[i+2] >= 'a' && word[i+2] <= 'f')
{
word[j] += word[i+2] - 'a' + 10;
}
else if(word[i+2] >= 'A' && word[i+2] <= 'F')
{
word[j] += word[i+2] - 'A' + 10;
}
else if(word[i+2] >= '0' && word[i+2] <= '9')
{
word[j] += word[i+2] - '0';
}
else
{
word[j] = '%';
word[j+1] = word[i+1];
word[j+2] = word[i+2];
j += 3;
i += 2;
continue;
}

j++;
i += 2;
}
else
{
word[j++] = word[i];
}
}
word[j] = 0;
}

如果原来字符串是unicode的需要这样使用:
WideCharToMultiByte(...);
UnescapeURL();
MultiByteToWideChar();
张琪Samuel 2007-12-27
  • 打赏
  • 举报
回复
在MSDN里面搜索UrlUnescape。
ToperRay 2007-12-27
  • 打赏
  • 举报
回复
就是编码的问题,比如说20是空格
laolaoliu2002 2007-12-25
  • 打赏
  • 举报
回复
字符编解码的问题
飞哥 2007-12-25
  • 打赏
  • 举报
回复
url解码

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧