Ich bin in der Lage, XML erfolgreich zu analysieren, aber ich stehe probelem beim Extrahieren von Daten aus CDATA
. Dafür benutze ich XML_SetCdataSectionHandler(parser,CDATAstart,CDATAend)
. Und mit diesem kann mein Programm identifizieren, wo die cdata
existiert, aber ich bin nicht in der Lage, Daten von dieser cdata
zu bekommen. Ich weiß nicht, wie man innerhalb und CDATAend
kodiert, um die Daten zu extrahieren. Kann mir bitte jemand dabei helfen? Mein XML-Parser wird unterDatenextraktion von cdata mit Expat in C
int parse_xml(char *buff, size_t buff_size) {
FILE *fp;
fp = fopen("sos.xml", "r");
if (fp == NULL) {
printf("Failed to open file\n");
return 1;
}
XML_Parser parser = XML_ParserCreate(NULL);
XML_SetElementHandler(parser, start_element, end_element);
XML_SetCharacterDataHandler(parser, handle_data);
XML_SetCdataSectionHandler(parser,CDATAstart,CDATAend);
XML_SetCharacterDataHandler(parser, handle_data);
memset(buff, 0, buff_size);
printf("strlen(buff) before parsing: %d\n", strlen(buff));
size_t file_size = 0;
file_size = fread(buff, sizeof(char), buff_size, fp); /* parse the xml */
if (XML_Parse(parser, buff, strlen(buff), XML_TRUE) == XML_STATUS_ERROR)
{
printf("Error: %s\n", XML_ErrorString(XML_GetErrorCode(parser)));
}
fclose(fp);
XML_ParserFree(parser);
return 0;
}