| 3 | #include "utils/readfile.h" |
| 4 | |
| 5 | std::vector<BBox> loadXML(std::string xml_path) |
| 6 | { |
| 7 | std::vector<BBox> objects; |
| 8 | // XML�ĵ� |
| 9 | TiXmlDocument doc; |
| 10 | // ����XML�ĵ� |
| 11 | if (!doc.LoadFile(xml_path.c_str())) |
| 12 | { |
| 13 | std::cerr << doc.ErrorDesc() << std::endl; |
| 14 | return objects; |
| 15 | } |
| 16 | |
| 17 | // ������ڵ��������ֵΪ�ĵ��ĵ�һ�����ڵ� |
| 18 | TiXmlElement *root = doc.FirstChildElement(); |
| 19 | // ���û���ҵ����ڵ�,˵���ǿ�XML�ĵ����߷�XML�ĵ� |
| 20 | if (root == NULL) |
| 21 | { |
| 22 | std::cerr << "Failed to load file: No root element." << std::endl; |
| 23 | // �����ڴ� |
| 24 | doc.Clear(); |
| 25 | return objects; |
| 26 | } |
| 27 | |
| 28 | // �����ӽڵ� |
| 29 | for (TiXmlElement *elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement()) |
| 30 | { |
| 31 | // ��ȡԪ���� |
| 32 | std::string elemName = elem->Value(); |
| 33 | std::string name = ""; |
| 34 | // ��ȡԪ������ֵ |
| 35 | if (strcmp(elemName.data(), "object") == 0) |
| 36 | { |
| 37 | for (TiXmlNode *object = elem->FirstChildElement(); object != NULL; object = object->NextSiblingElement()) |
| 38 | { |
| 39 | if (strcmp(object->Value(), "name") == 0) |
| 40 | { |
| 41 | name = object->FirstChild()->Value(); |
| 42 | } |
| 43 | |
| 44 | if (strcmp(object->Value(), "bndbox") == 0) |
| 45 | { |
| 46 | BBox obj; |
| 47 | TiXmlElement * xmin = object->FirstChildElement("xmin"); |
| 48 | TiXmlElement * ymin = object->FirstChildElement("ymin"); |
| 49 | TiXmlElement * xmax = object->FirstChildElement("xmax"); |
| 50 | TiXmlElement * ymax = object->FirstChildElement("ymax"); |
| 51 | |
| 52 | obj.xmin = atoi(std::string(xmin->FirstChild()->Value()).c_str()); |
| 53 | obj.xmax = atoi(std::string(xmax->FirstChild()->Value()).c_str()); |
| 54 | obj.ymin = atoi(std::string(ymin->FirstChild()->Value()).c_str()); |
| 55 | obj.ymax = atoi(std::string(ymax->FirstChild()->Value()).c_str()); |
| 56 | obj.name = name; |
| 57 | objects.push_back(obj); |
| 58 | } |
| 59 | |
| 60 | //cout << bndbox->Value() << endl; |
| 61 | } |
| 62 | } |
no test coverage detected