//-------------------------------------------------- //-------------------------------------------------- XML::Node* GetFirstChildElement(const XML::Node* in_node, const std::string& in_name) { const s8* nameData = nullptr; u32 nameSize = in_name.length(); if (nameSize > 0) { nameData = in_name.c_str(); } XML::Node* child = in_node->first_node(nameData, nameSize); if (child != nullptr && child->type() == rapidxml::node_type::node_element) { return child; } else if (child != nullptr) { XML::Node* sibling = child; do { sibling = sibling->next_sibling(nameData, nameSize); } while(sibling != nullptr && sibling->type() != rapidxml::node_type::node_element); return sibling; } return nullptr; }
//-------------------------------------------------- //-------------------------------------------------- XML::Node* GetNextSiblingElement(const XML::Node* in_node, const std::string& in_name) { const s8* nameData = nullptr; u32 nameSize = in_name.length(); if (nameSize > 0) { nameData = in_name.c_str(); } XML::Node* sibling = in_node->next_sibling(nameData, nameSize); while (sibling != nullptr && sibling->type() != rapidxml::node_type::node_element) { sibling = sibling->next_sibling(nameData, nameSize); } return sibling; }