C++ 使用C+中的Expat XML解析器在CDATA中丢失转义符号周围的空白+;
我正在使用XML在应用程序之间发送项目信息。其中一条信息是项目描述。因此,我:C++ 使用C+中的Expat XML解析器在CDATA中丢失转义符号周围的空白+;,c++,xml,parsing,whitespace,expat-parser,C++,Xml,Parsing,Whitespace,Expat Parser,我正在使用XML在应用程序之间发送项目信息。其中一条信息是项目描述。因此,我: <ProjectDescription>Test & spaces around&some & amps!</ProjectDescription> 处理程序声明如下: static void dataHandler(void *userData,const XML_Char *s,int l) 然后“s”包含元素中的数据。在没有任何&
<ProjectDescription>Test & spaces around&some & amps!</ProjectDescription>
处理程序声明如下:
static void dataHandler(void *userData,const XML_Char *s,int l)
然后“s”包含元素中的数据。在没有任何&stuff的情况下,它是打开和关闭标记之间的整个字符串,在“带空格的字符串”的情况下。我刚刚用我自己的库运行了一个使用expat的测试。我的处理程序如下所示,使用调试语句显示正在发生的事情:
void CharDataHandler( void * parser,
const XML_Char *s,
int len ) {
std::cerr << "[" << s << "]\n";
std::cerr << len << "\n";
// my own processing here - not important
}
我得到三个char*和length数据集如下的事件:
char * = "XXX & YYY"
length = 4
char * = "&"
length = 1
char * = " YYY"
length = 4
因此,空间被保留。据我所知,我没有使用任何特殊设置。您使用的是什么版本和平台的Expat?我刚刚用我自己的库运行了一个使用Expat的测试。我的处理程序如下所示,使用调试语句显示正在发生的事情:
void CharDataHandler( void * parser,
const XML_Char *s,
int len ) {
std::cerr << "[" << s << "]\n";
std::cerr << len << "\n";
// my own processing here - not important
}
我得到三个char*和length数据集如下的事件:
char * = "XXX & YYY"
length = 4
char * = "&"
length = 1
char * = " YYY"
length = 4
因此,空间被保留。据我所知,我没有使用任何特殊设置。您使用的是什么版本和平台的Expat?我刚从tar.gz更新到Expat-2.0.1,我今天早上从网站上下载了它,希望它能在本次发布中得到修复。平台是Win32。好的,一些特定于我的dataHandler的代码去掉了空白。谢谢我刚刚从tar.gz更新到expat-2.0.1,我今天早上从网站上下载了它,希望它能在这个版本中修复。平台是Win32。好的,一些特定于我的dataHandler的代码去掉了空白。谢谢从您编辑的代码来看,您可能没有考虑处理程序的长度参数。啊哈!我确实考虑到了这一点,但你的评论让我看到了一段我认为理所当然的代码。我应该比接受同事们写的代码更清楚!谢谢你的帮助!处理程序是如何去除空白的?我似乎面临着同样的问题,处理程序代码不是我写的。所以你的任何建议都可能非常有用。谢谢从您编辑的代码来看,您可能没有考虑处理程序的长度参数。啊哈!我确实考虑到了这一点,但你的评论让我看到了一段我认为理所当然的代码。我应该比接受同事们写的代码更清楚!谢谢你的帮助!处理程序是如何去除空白的?我似乎面临着同样的问题,处理程序代码不是我写的。所以你的任何建议都可能非常有用。谢谢
char * = "XXX & YYY"
length = 4
char * = "&"
length = 1
char * = " YYY"
length = 4