Доступ к проанализированным XML-данным - PullRequest
0 голосов
/ 27 марта 2011

Где можно получить доступ к данным из проанализированного XML-файла при использовании libxml?

Вот пример использования из xmlsoft

exampleFunc(const char *filename) {
xmlParserCtxtPtr ctxt; /* the parser context */
xmlDocPtr doc; /* the resulting document tree */

/* create a parser context */
ctxt = xmlNewParserCtxt();
if (ctxt == NULL) {
    fprintf(stderr, "Failed to allocate parser context\n");
return;
}
/* parse the file, activating the DTD validation option */
doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID);
/* check if parsing suceeded */
if (doc == NULL) {
    fprintf(stderr, "Failed to parse %s\n", filename);
} else {
/* check if validation suceeded */
    if (ctxt->valid == 0)
    fprintf(stderr, "Failed to validate %s\n", filename);
/* free up the resulting document */
xmlFreeDoc(doc);
}
/* free up the parser context */
xmlFreeParserCtxt(ctxt);
}

Как древовидная структура используется для доступа к данным в ней?

1 Ответ

1 голос
/ 27 марта 2011

Вы можете получить свои данные двумя способами.В приведенном выше коде у вас уже есть файл xml, проанализированный и готовый в вашей переменной - doc (типа: xmlDocPtr).Используя функции, доступные в модуле xmlDocPtr, вы можете перебирать и перемещаться по вашему xml и получать соответствующие данные.Другой способ - использовать XPath.Библиотека поддерживает XPath, и вы можете использовать это.

См. Этот пример: xpath1.c .Это использует xpath для получения данных.Если вы знаете свой XML, использование XPath будет простым и быстрым способом получения необходимых данных.

...