I encountered (as it seems to me) strange behavior when using the sax parser, and I wanted to know if this was normal.
I am sending this XML through the SAX parser:
<site url="http://example.com/?a=b&b=c"; />
"&" is converted to "&" when the startElement is called. Is this supposed to be? If so, I would like to understand why.
I pasted an example demonstrating the problem here:
#include <stdlib.h> #include <libxml/parser.h> static void start_element(void * ctx, const xmlChar *name, const xmlChar **atts) { int i = 0; while(atts[i] != NULL) { printf("%s\n", atts[i]); i++; } } int main(int argc, char *argv[]) { xmlSAXHandlerPtr handler = calloc(1, sizeof(xmlSAXHandler)); handler->startElement = start_element; char * xml = "<site url=\"http://example.com/?a=b&b=c\" />"; xmlSAXUserParseMemory( handler, NULL, xml, strlen(xml) ); }
PS: This message is really extracted from the LibXML2 list ... and I am not the original author of this letter, but I noticed a problem with Nokogiri and Aaron (accompanying Nokigiri) actually sent this message myself.
source share