#c #ubuntu #segmentation-fault #libxml2 #libxslt
#c #ubuntu #ошибка сегментации #libxml2 #libxslt
Вопрос:
Я пытаюсь преобразовать XML-файл с помощью XSLT в HTML.
#include <string.h>
#include <libxml/xmlmemory.h>
#include <libxml/debugXML.h>
#include <libxml/HTMLtree.h>
#include <libxml/xmlIO.h>
#include <libxml/DOCBparser.h>
#include <libxml/xinclude.h>
#include <libxml/catalog.h>
#include <libxslt/xslt.h>
#include <libxslt/xsltInternals.h>
#include <libxslt/transform.h>
#include <libxslt/xsltutils.h>
extern int xmlLoadExtDtdDefaultValue;
int main(int argc, char **argv) {
int i=1;
const char *params[1];
xsltStylesheetPtr cur = NULL;
xmlDocPtr doc, res;
//FILE * ptrFile;
//ptrFile = fopen("result.html", "r");
params[0] = NULL;
xmlSubstituteEntitiesDefault(1);
xmlLoadExtDtdDefaultValue = 1;
cur = xsltParseStylesheetFile((const xmlChar *)argv[i]);
i ;
doc = xmlParseFile(argv[i]);
res = xsltApplyStylesheet(cur, doc, params);
xsltSaveResultToFile(stdout, res, cur);
//fclose(ptrFile);
xsltFreeStylesheet(cur);
xmlFreeDoc(res);
xmlFreeDoc(doc);
xsltCleanupGlobals();
xmlCleanupParser();
return(0);
}
Это работает, но HTML-код отображается в консоли. Я хочу сохранить его в файл, но когда я пытаюсь создать файл «result.html » и поместите его в xsltSaveResultToFile(ptrFile, res, cur) появляется ошибка «ошибка сегментации». Что я должен сделать, чтобы это исправить?
Комментарии:
1. Если вы хотите сохранить в файл, почему вы открываете его с
r
флагом? Используйтеw
илиa
.2. fopen возвращает значение null. почему?
3. Потому
result.html
что еще не существует.