Ich habe (was ich denke) ein seltsames Verhalten bei der Verwendung des Sax Parsers festgestellt, und ich wollte wissen, ob es normal ist.LibXML2 Sax Parsing und kaufmännisches Und
ich dieses XML durch den SAX-Parser zu senden:
<site url="http://example.com/?a=b&b=c"; />
Die "&" wird umgewandelt in "&", wenn der startElement
Rückruf genannt wird. Soll es das tun? Wenn ja, würde ich gerne verstehen warum.
Ich habe ein Beispiel demonstriert das Problem hier eingefügt:
#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: Diese Nachricht tatsächlich von den LibXML2 list extrahiert wird ... und ich bin nicht der ursprüngliche Autor dieser Mail, aber ich merkte, das Problem mit Nokogiri und Aaron (der Betreuer von Nokogiri) tatsächlich diese Nachricht selbst gepostet.