LibXML2 Sax Парсинг и амперсанд
Я столкнулся (как я думаю, с) странным поведением при использовании синтаксического анализатора саксофона, и я хотел знать, нормально ли это.
Я отправляю этот XML через парсер SAX:
<site url="http://example.com/?a=b&b=c"; />
«&» Преобразуется в «&», когдаstartElement
обратный вызов называется. Это должно сделать это? Если это так, я хотел бы понять, почему.
Я вставил пример, демонстрирующий проблему здесь:
#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: это сообщение фактически извлечено изСписок LibXML2... и я не являюсь первоначальным автором этого письма, но я заметил проблему с использованиемNokogiri а такжеАарон (сопровождающий Nokogiri) фактически отправил это сообщение сам.