Add operator[] for xml_node, ensure child, more convinently for config updating

This commit is contained in:
halx99 2019-01-12 01:28:12 +08:00
parent 9fcae40bb5
commit 8fbb70f3e5
2 changed files with 11 additions and 0 deletions

View File

@ -5482,6 +5482,14 @@ namespace pugi
return (_root && _root->value) ? _root->value + 0 : PUGIXML_TEXT(""); return (_root && _root->value) ? _root->value + 0 : PUGIXML_TEXT("");
} }
PUGI__FN xml_node xml_node::operator[](const char_t* name)
{
if (!_root) return xml_node();
auto node = this->child(name);
if (node) return node;
return this->append_child(name);
}
PUGI__FN xml_node xml_node::child(const char_t* name_) const PUGI__FN xml_node xml_node::child(const char_t* name_) const
{ {
if (!_root) return xml_node(); if (!_root) return xml_node();

View File

@ -510,6 +510,9 @@ namespace pugi
// Get text object for the current node // Get text object for the current node
xml_text text() const; xml_text text() const;
// Ensure child, more convinently for config updating
xml_node operator[](const char_t* name);
// Get child, attribute or next/previous sibling with the specified name // Get child, attribute or next/previous sibling with the specified name
xml_node child(const char_t* name) const; xml_node child(const char_t* name) const;
xml_attribute attribute(const char_t* name) const; xml_attribute attribute(const char_t* name) const;