void InfoDTVFileProcesser::ProcessInfoDTVIBLObject(InfoDTVObjectPtr aObject, rapidxml::xml_document<> &aXmlDocument) { aXmlDocument.clear(); // boost::shared_array<char> Content(new char[aObject->IBLFileContent.size() + 1]); boost::shared_ptr<char> Content((char *)std::malloc(aObject->IBLFileContent.size() + 1),&free);//new char[aObject->IBLFileContent.size() + 1]); strcpy(Content.get(), aObject->IBLFileContent.c_str()); //aXmlDocument->Parse(aObject->IBLFileContent.c_str()); aXmlDocument.parse<0> (Content.get()); rapidxml::xml_node<> *node = aXmlDocument.first_node(); while (node) { // cout << "Name of node is: " << node->name() << "\n"; // cout << "Node has value " << node->value() << "\n"; string TagName = node->name(); TagName = toUpper(TagName); if (TagName == "IMG") { IBLProcessImageLink(aObject, node, 0); IBLProcessAction(aObject, node, "laction", "lasrc"); IBLProcessAction(aObject, node, "faction", "fasrc"); IBLProcessAction(aObject, node, "action", "asrc"); // attr = node->first_attribute("laction", 7, false); // attr = node->first_attribute("lasrc", 5, false); // attr = node->first_attribute("faction", 7, false); // attr = node->first_attribute("fasrc", 5, false); // for (xml_attribute<> *attr = node->first_attribute(); attr; attr // = attr->next_attribute()) // { // cout << "Node has attribute " << attr->name() << " "; // cout << "with value " << attr->value() << "\n"; // } } else if (TagName == "STBAD") { IBLProcessImageLink(aObject, node, 0); } else if (TagName == "TEXTLINK") { IBLProcessAction(aObject, node, "laction", "lasrc"); IBLProcessAction(aObject, node, "faction", "fasrc"); IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "REGION") { IBLProcessImageLink(aObject, node, 1); } else if (TagName == "GROUPACTION") { //xml_attribute<> *attr = node->first_attribute("bkimg", 6, false); string Value = node->value(); IBLProcessGroupAction(aObject, Value); } else if(TagName=="KEYACTION") { IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "FORCEACTION") { IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "CARDID") { IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "BOUQUETID") { IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "STBID") { IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "NUMINPUT") { // string Value = node->value(); // IBLProcessGroupAction(aObject, Value); IBLProcessAction(aObject, node, "action", "asrc"); } else if (TagName == "VCHANNEL") { string Value = node->value(); IBLProcessGroupAction(aObject, Value); } else if (TagName == "CODEINPUT") { IBLProcessAction(aObject, node, "laction", "lasrc"); IBLProcessAction(aObject, node, "faction", "fasrc"); string Value = node->value(); IBLProcessGroupAction(aObject, Value); } else if (TagName == "SLOT") { string Value = node->value(); IBLProcessGroupAction(aObject, Value); } else if (TagName == "LINKRESOURCEINFO") { IBLProcessLinkResourceInfo(aObject,node); // string Value = node->value(); // IBLProcessGroupAction(Value); } else if(TagName=="SELECTFILE") { IBLProcessAction(aObject, node, "action", "asrc"); } node = node->next_sibling(); } }