CciElement* cpiCreateElement( int* returnCode, CciParser* parser);
如果成功,返回新元素对象的地址。否则,返回零值(CCI_NULL_ADDR),并且 returnCode 参数表明错误的原因。
此示例取自样本解析器文件 BipSampPluginParser.c(198 行到 225 行):
/* Advance to the end of the value */ while (pc->iCurrentCharacter != quoteChar) { advance( (PARSER_CONTEXT_ST *)context, parser ); } /* Get a pointer to the end of the tag */ endMarker = (char*)pc->iBuffer+(int)pc->iIndex; /* Compute the size of the tag */ markedSize = (size_t)endMarker-(int)startMarker; /* Convert the attribute value into broker form */ data = CciNString((char *)startMarker, markedSize, pc->iCcsid); /* Create a new name-value element for the attribute */ newElement = cpiCreateElement(&rc, parser); cpiSetElementType(&rc, newElement, CCI_ELEMENT_TYPE_NAME_VALUE); cpiSetElementName(&rc, newElement, data); if (pc->trace) { const char * mbData = mbString(data, pc->iCcsid); fprintf(pc->tracefile, "PLUGIN: Created new NAMEVALUE element; object=0x%x type=0x%x name=", newElement, CCI_ELEMENT_TYPE_NAME_VALUE); fprintf(pc->tracefile, "%s\n", mbData); fflush(pc->tracefile); free((void *)mbData); } /* Free the memory created in CciNString() */ free((void *)data);