35 {
36 CHECK_NOTNULL(roads);
37
38 auto road_node = xml_node.FirstChildElement("road");
39 while (road_node) {
40
41 std::string id;
42 std::string junction_id;
45 &junction_id);
46 if (checker != tinyxml2::XML_SUCCESS) {
47 std::string err_msg = "Error parsing road attributes";
49 }
50
51 RoadInternal road_internal;
52 road_internal.id = id;
53 road_internal.road.mutable_id()->set_id(id);
54 if (IsRoadBelongToJunction(junction_id)) {
55 road_internal.road.mutable_junction_id()->set_id(junction_id);
56 }
57
58 std::string type;
60 if (checker != tinyxml2::XML_SUCCESS) {
61
62 type = "CITYROAD";
63 }
66 road_internal.road.set_type(pb_road_type);
67
68
70 &road_internal.sections));
71
72
73 Parse_road_objects(*road_node, &road_internal);
74
75 Parse_road_signals(*road_node, &road_internal);
76
77 roads->push_back(road_internal);
78 road_node = road_node->NextSiblingElement("road");
79 }
80
82}
static Status OK()
generate a success status.
static Status Parse(const tinyxml2::XMLElement &xml_node, const std::string &road_id, std::vector< RoadSectionInternal > *sections)
static tinyxml2::XMLError QueryStringAttribute(const tinyxml2::XMLElement &xml_node, const std::string &name, std::string *value)
#define RETURN_IF_ERROR(expr)
apollo::hdmap::Road_Type PbRoadType