LibXML2 Sax Parsing y ampersand

He encontrado (lo que creo que es) un comportamiento extraño al usar el analizador de saxofón, y quería saber si es normal.

Estoy enviando este XML a través del analizador SAX:

<site url="http://example.com/?a=b&amp;b=c"; />

El "&" se convierte en "&" cuando elstartElemente llama a @ callback. ¿Se supone que hace eso? Si es así, me gustaría entender por qué.

He pegado un ejemplo que demuestra el problema aquí:

#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&amp;b=c\" />";

  xmlSAXUserParseMemory( handler,
                          NULL,
                          xml,
                          strlen(xml)
  );
}

PS: este mensaje se extrae de la LibXML2 list ... y no soy el autor inicial de este correo, pero noté el problema usando Nokogiri y Aaron (el mantenedor de Nokogiri) en realidad publicó este mensaje él mismo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta