
libxml_get_last_error() 함수는 libxml2 라이브러리를 사용하여 XML 문서를 파싱하는 중 발생한 마지막 오류를 얻을 수 있는 함수입니다. 이 함수를 사용할 때 오류 코드를 얻기 전에 오류 메시지를 얻을 수 없습니다. 오류 코드를 얻기 위해서는 libxml_get_last_error() 함수를 호출하기 전에 libxml2 라이브러리의 오류를 초기화해야 합니다.
libxml2 라이브러리의 오류를 초기화하는 함수는 libxmlResetParserStructuredErrors() 함수입니다. 이 함수를 호출하면 libxml2 라이브러리의 오류를 초기화하고, 오류 코드를 얻을 수 있습니다.
오류 코드를 얻은 후, 오류를 제거하고 다시 파싱을 진행하는 방법은 다음과 같습니다.
1. 오류 코드를 얻기 위해 libxml_get_last_error() 함수를 호출합니다.
2. 오류 코드를 얻은 후, 오류 메시지를 얻기 위해 libxml_get_last_error() 함수를 다시 호출합니다.
3. 오류 메시지를 얻은 후, 오류를 제거하기 위해 libxmlFreeParserStructuredError() 함수를 호출합니다.
4. 오류를 제거한 후, 다시 파싱을 진행하기 위해 libxmlParseFile() 함수를 호출합니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
int main() {
xmlDocPtr doc;
xmlParserCtxtPtr ctxt;
xmlErrorPtr err;
// 오류를 초기화합니다.
libxmlResetParserStructuredErrors(NULL);
// XML 문서를 파싱합니다.
ctxt = xmlNewParserCtxt();
doc = xmlCtxtReadFile(ctxt, "example.xml", NULL, XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
if (doc == NULL) {
// 오류 코드를 얻습니다.
err = libxmlGetLastError();
if (err != NULL) {
// 오류 메시지를 얻습니다.
printf("오류 코드: %dn", err->code);
printf("오류 메시지: %sn", err->message);
// 오류를 제거합니다.
libxmlFreeParserStructuredError(err);
}
}
// 다시 파싱을 진행합니다.
doc = xmlCtxtReadFile(ctxt, "example.xml", NULL, XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
// 파싱이 끝나면, 파서 컨텍스트를 해제합니다.
xmlFreeDoc(doc);
xmlFreeParserCtxt(ctxt);
return 0;
}
이 예제 코드는 XML 문서를 파싱하는 중 발생한 오류를 얻고, 오류를 제거한 후 다시 파싱을 진행하는 방법을 보여줍니다.
2025-04-25 15:00