2
我使用libxml2庫創建了一個SAX驗證器。如何從Libxml2庫中釋放結構xmlSAXHandler
這裏是我如何創建它:
void OnStartElementNs(
void *ctx,
const xmlChar *localname,
const xmlChar *prefix,
const xmlChar *URI,
int nb_namespaces,
const xmlChar **namespaces,
int nb_attributes,
int nb_defaulted,
const xmlChar **attributes) {}
void OnEndElementNs(
void* ctx,
const xmlChar* localname,
const xmlChar* prefix,
const xmlChar* URI) {}
void OnCharacters(void *ctx, const xmlChar *ch, int len)
{
char chars[len + 1];
strncpy(chars, (const char *)ch, len);
chars[len] = '\0';
}
xmlSAXHandler make_sax_handler()
{
xmlSAXHandler SAXHander;
memset(&SAXHander, 0, sizeof(xmlSAXHandler));
SAXHander.initialized = XML_SAX2_MAGIC;
SAXHander.startElementNs = OnStartElementNs;
SAXHander.endElementNs = OnEndElementNs;
SAXHander.characters = OnCharacters;
return SAXHander;
}
xmlSAXHandler mySAXHandler = make_sax_handler();
於是我找來了xmlSAXHandler對象,如果我要釋放內存,我可以自由saparately每個變量,如使用xmlFree(XMLCHAR *)。我是XML和libxml2的新手,所以我想知道是否有一種方便的方法來釋放整個結構。
謝謝!