Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用C+中的Expat XML解析器在CDATA中丢失转义符号周围的空白+;_C++_Xml_Parsing_Whitespace_Expat Parser - Fatal编程技术网

C++ 使用C+中的Expat XML解析器在CDATA中丢失转义符号周围的空白+;

C++ 使用C+中的Expat XML解析器在CDATA中丢失转义符号周围的空白+;,c++,xml,parsing,whitespace,expat-parser,C++,Xml,Parsing,Whitespace,Expat Parser,我正在使用XML在应用程序之间发送项目信息。其中一条信息是项目描述。因此,我: <ProjectDescription>Test &amp; spaces around&amp;some &amp; amps!</ProjectDescription> 处理程序声明如下: static void dataHandler(void *userData,const XML_Char *s,int l) 然后“s”包含元素中的数据。在没有任何&

我正在使用XML在应用程序之间发送项目信息。其中一条信息是项目描述。因此,我:

<ProjectDescription>Test &amp; spaces around&amp;some  &amp;  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 &amp; 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 &amp; 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 &amp; YYY"
length = 4

char * = "&"
length = 1

char * = " YYY"
length = 4