17using namespace tinyxml2;
34 _ele->SetAttribute(name.data(), value);
40 _ele->SetAttribute(name.data(), value.data());
46 _ele->SetAttribute(name.data(), value.c_str());
66 std::string str = ret._ele->Name();
67 for (
const std::string_view& name : vec_name)
71 ret._ele = ret._ele->FirstChildElement(name.data());
80 void Set(XMLElement* ele) { _ele = ele; }
81 XMLElement*
Get() {
return _ele; }
108 bool Open(std::string_view path_name)
110 if (_doc.LoadFile(path_name.data()) != XML_SUCCESS)
112 log_err(
"xml文件打开失败:{}", path_name);
122 bool Save(std::string_view path_name)
124 if (_doc.SaveFile(path_name.data()) != XML_SUCCESS)
126 log_err(
"xml文件保存失败:{}", path_name);
140 if (vec_name.empty())
145 XMLElement* ele = _doc.FirstChildElement(vec_name[0].data());
146 if (vec_name.size() == 1)
151 ret.
Set(_get_child_element(ele, vec_name));
155 tinyxml2::XMLDocument _doc;
157 XMLElement* _get_child_element(XMLElement* ele,
const std::vector<std::string_view>& vec_name)
164 std::string str{ vec_name[0] };
165 for (
size_t i = 1; i < vec_name.size(); ++i)
169 ele = ele->FirstChildElement(vec_name[i].data());
FileXmlElement GetChildElement(const std::vector< std::string_view > &vec_name)
获取子元素
void Set(XMLElement *ele)
void SetAttribute(std::string_view name, T value)
设置属性
void SetAttribute(std::string_view name, const std::string &value)
void SetAttribute(std::string_view name, std::string_view value)
FileXmlElement GetChildElement(const std::vector< std::string_view > &vec_name)
获取子元素
bool Save(std::string_view path_name)
保存到文件
bool Open(std::string_view path_name)
打开xml文件