int AIO_OfxGroup_BUYMF_StartTag(AIO_OFX_GROUP *g, const char *tagName) { AIO_OFX_GROUP_BUYMF *xg; GWEN_XML_CONTEXT *ctx; AIO_OFX_GROUP *gNew=NULL; assert(g); xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_BUYMF, g); assert(xg); ctx=AIO_OfxGroup_GetXmlContext(g); if (strcasecmp(tagName, "BUYTYPE")==0 || strcasecmp(tagName, "SELLTYPE")==0) { /* TODO */ } else if (strcasecmp(tagName, "INVBUY")==0 || strcasecmp(tagName, "INVSELL")==0) { gNew=AIO_OfxGroup_INVBUY_new(tagName, g, ctx); } else { DBG_WARN(AQBANKING_LOGDOMAIN, "Ignoring tag [%s]", tagName); free(xg->currentElement); xg->currentElement=strdup(tagName); } if (gNew) { AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew); GWEN_XmlCtx_IncDepth(ctx); } return 0; }
int AIO_OfxGroup_Document_StartTag(AIO_OFX_GROUP *g, const char *tagName) { AIO_OFX_GROUP *gNew=NULL; GWEN_XML_CONTEXT *ctx; assert(g); ctx=AIO_OfxGroup_GetXmlContext(g); if (strcasecmp(tagName, "OFX")==0) gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx); else if (strcasecmp(tagName, "OFC")==0) { gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx); } else { DBG_WARN(AQBANKING_LOGDOMAIN, "Ignoring group [%s]", tagName); gNew=AIO_OfxGroup_Ignore_new(tagName, g, ctx); } if (gNew) { AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew); GWEN_XmlCtx_IncDepth(ctx); } return 0; }
GWEN_XML_CONTEXT *AIO_OfxXmlCtx_new(uint32_t flags, AB_IMEXPORTER_CONTEXT *ioContext) { GWEN_XML_CONTEXT *ctx; AIO_OFX_XMLCTX *xctx; AIO_OFX_GROUP *g; /* create base object */ ctx=GWEN_XmlCtx_new(flags); assert(ctx); /* create and assign extension */ GWEN_NEW_OBJECT(AIO_OFX_XMLCTX, xctx); assert(xctx); GWEN_INHERIT_SETDATA(GWEN_XML_CONTEXT, AIO_OFX_XMLCTX, ctx, xctx, AIO_OfxXmlCtx_FreeData); xctx->ioContext=ioContext; /* set virtual functions */ GWEN_XmlCtx_SetStartTagFn(ctx, AIO_OfxXmlCtx_StartTag); GWEN_XmlCtx_SetEndTagFn(ctx, AIO_OfxXmlCtx_EndTag); GWEN_XmlCtx_SetAddDataFn(ctx, AIO_OfxXmlCtx_AddData); GWEN_XmlCtx_SetAddCommentFn(ctx, AIO_OfxXmlCtx_AddComment); GWEN_XmlCtx_SetAddAttrFn(ctx, AIO_OfxXmlCtx_AddAttr); /* create initial group */ g=AIO_OfxGroup_Document_new("OFX_FILE", NULL, ctx); assert(g); AIO_OfxXmlCtx_SetCurrentGroup(ctx, g); /* return base object */ return ctx; }
int AIO_OfxGroup_ACCTINFO_StartTag(AIO_OFX_GROUP *g, const char *tagName) { AIO_OFX_GROUP_ACCTINFO *xg; GWEN_XML_CONTEXT *ctx; AIO_OFX_GROUP *gNew=NULL; assert(g); xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_ACCTINFO, g); assert(xg); ctx=AIO_OfxGroup_GetXmlContext(g); free(xg->currentElement); xg->currentElement=NULL; if (strcasecmp(tagName, "DESC")==0) { xg->currentElement=strdup(tagName); } else if (strcasecmp(tagName, "BANKACCTINFO")==0 || strcasecmp(tagName, "CCACCTINFO")==0 || strcasecmp(tagName, "BPACCTINFO")==0 || strcasecmp(tagName, "INVACCTINFO")==0) { gNew=AIO_OfxGroup_BANKACCTINFO_new(tagName, g, ctx); } else if (strcasecmp(tagName, "DESC")==0) { xg->currentElement=strdup(tagName); } else { DBG_WARN(AQBANKING_LOGDOMAIN, "Ignoring tag [%s]", tagName); xg->currentElement=strdup(tagName); } if (gNew) { AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew); GWEN_XmlCtx_IncDepth(ctx); } return 0; }