// 导出场景 bool XMLSceneSerializer::exportScene(IScene* scene, const String& filename) { m_scene = scene; LogManager::getSingleton().logMessage("XMLSceneSerializer writing XMLScene data to " + filename + "..."); // 新建xml文件 if(!newXML("Scenes")) { return false; } TiXmlElement *scenesElement = m_xmlDoc->RootElement(); LogManager::getSingleton().logMessage("Writing XMLScene data..."); writeScene(scenesElement); LogManager::getSingleton().logMessage("XMLScene data exported."); saveXML(filename); LogManager::getSingleton().logMessage("XMLSceneSerializer export successful."); closeXML(); return true; }
int cache_load(netsnmp_cache *cache, void *magic) { DEBUGMSGTL(("mgPIDECMTable", "Load Handler\n")); xmlDocPtr doc; xmlChar *xpath = (xmlChar*) "/dvb/mg/mgSignalCharacteristics/mgSignalCharacteristicsObjects/mgTSStructure/mgPIDECMTable/mgPIDECMEntry"; xmlNodeSetPtr nodeset; xmlXPathObjectPtr result; xmlNodePtr cur; int i; netsnmp_table_row *row; int mgPIDECMInputNumber = -1; int mgPIDECMServiceNumber = -1; int mgPIDECMPID = -1; int mgPIDECMCaPID = -1; int mgPIDECMCASystemID = -1; doc = getXMLDoc(); if (doc == NULL) { DEBUGMSGTL(("mgPIDECMTable", "Problem with loading file %s, keeping old values in table.\n", INPUTXMLDOCUMENTPATH)); return SNMP_ERR_NOERROR; } cleanTableSet(table_set); result = getNodesPtr(doc, xpath); if (result) { nodeset = result->nodesetval; for (i = 0; i < nodeset->nodeNr; i++) { cur = nodeset->nodeTab[i]->xmlChildrenNode; while (cur != NULL) { if ((!xmlStrcmp(cur->name, (const xmlChar *) "mgPIDECMInputNumber"))) { mgPIDECMInputNumber = atoi(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); DEBUGMSGTL(("mgPIDECMTable", "mgPIDECMInputNumber: %d\n", mgPIDECMInputNumber)); } else if ((!xmlStrcmp(cur->name, (const xmlChar *) "mgPIDECMServiceNumber"))) { mgPIDECMServiceNumber = atoi(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); DEBUGMSGTL(("mgPIDECMTable", " mgPIDECMServiceNumber: %d\n", mgPIDECMServiceNumber)); } else if ((!xmlStrcmp(cur->name, (const xmlChar *) "mgPIDECMPID"))) { mgPIDECMPID = atoi(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); DEBUGMSGTL(("mgPIDECMTable", "mgPIDECMPID: %d\n", mgPIDECMPID)); } else if ((!xmlStrcmp(cur->name, (const xmlChar *) "mgPIDECMCaPID"))) { mgPIDECMCaPID = atoi(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); DEBUGMSGTL(("mgPIDECMTable", "mgPIDECMCaPID: %d\n", mgPIDECMCaPID)); } else if ((!xmlStrcmp(cur->name, (const xmlChar *) "mgPIDECMCASystemID"))) { mgPIDECMCASystemID = atoi(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); DEBUGMSGTL(("mgPIDECMTable", "mgPIDECMCASystemID: %d\n", mgPIDECMCASystemID)); } cur = cur->next; } row = netsnmp_create_table_data_row(); netsnmp_table_row_add_index(row, ASN_INTEGER, &mgPIDECMInputNumber, sizeof (mgPIDECMInputNumber)); netsnmp_table_row_add_index(row, ASN_INTEGER, &mgPIDECMServiceNumber, sizeof (mgPIDECMServiceNumber)); netsnmp_table_row_add_index(row, ASN_INTEGER, &mgPIDECMPID, sizeof (mgPIDECMPID)); netsnmp_set_row_column(row, 4, ASN_INTEGER, &mgPIDECMCaPID, sizeof (mgPIDECMCaPID)); netsnmp_set_row_column(row, 5, ASN_INTEGER, &mgPIDECMCASystemID, sizeof (mgPIDECMCASystemID)); netsnmp_table_dataset_add_row(table_set, row); mgPIDECMInputNumber = -1; mgPIDECMServiceNumber = -1; mgPIDECMPID = -1; mgPIDECMCaPID = -1; mgPIDECMCASystemID = -1; } } else { DEBUGMSGTL(("mgPIDECMTable", "Data loaded from file %s is empty.\n", INPUTXMLDOCUMENTPATH)); } closeXML(doc, result); return SNMP_ERR_NOERROR; }