xml_node::all_elements_by_name is now deprecated
git-svn-id: http://pugixml.googlecode.com/svn/trunk@563 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
parent
382a33ce4b
commit
8e0c64401f
@ -432,7 +432,7 @@ The only exception is `set_memory_management_functions`; it modifies global vari
|
|||||||
|
|
||||||
With the exception of XPath, pugixml itself does not throw any exceptions. Additionally, most pugixml functions have a no-throw exception guarantee.
|
With the exception of XPath, pugixml itself does not throw any exceptions. Additionally, most pugixml functions have a no-throw exception guarantee.
|
||||||
|
|
||||||
This is not applicable to functions that operate on STL strings or IOstreams; such functions have either strong guarantee (functions that operate on strings) or basic guarantee (functions that operate on streams). Also functions that call user-defined callbacks (i.e. `xml_node::traverse` or `xml_node::all_elements_by_name`) do not provide any exception guarantees beyond the ones provided by callback.
|
This is not applicable to functions that operate on STL strings or IOstreams; such functions have either strong guarantee (functions that operate on strings) or basic guarantee (functions that operate on streams). Also functions that call user-defined callbacks (i.e. `xml_node::traverse` or `xml_node::find_node`) do not provide any exception guarantees beyond the ones provided by callback.
|
||||||
|
|
||||||
XPath functions may throw `xpath_exception` on parsing error; also, XPath implementation uses STL, and thus may throw i.e. `std::bad_alloc` in low memory conditions. Still, XPath functions provide strong exception guarantee.
|
XPath functions may throw `xpath_exception` on parsing error; also, XPath implementation uses STL, and thus may throw i.e. `std::bad_alloc` in low memory conditions. Still, XPath functions provide strong exception guarantee.
|
||||||
|
|
||||||
@ -915,7 +915,7 @@ Major release, featuring extended and improved Unicode support, miscellaneous pe
|
|||||||
|
|
||||||
* Compatibility:
|
* Compatibility:
|
||||||
# parse() and as_utf16 are left for compatibility (these functions are deprecated and will be removed in version 1.0)
|
# parse() and as_utf16 are left for compatibility (these functions are deprecated and will be removed in version 1.0)
|
||||||
# Wildcard functions, document_order/precompute_document_order functions and format_write_bom_utf8 flag are deprecated and will be removed in version 1.0
|
# Wildcard functions, document_order/precompute_document_order functions, all_elements_by_name function and format_write_bom_utf8 flag are deprecated and will be removed in version 1.0
|
||||||
# xpath_type_t enumeration was renamed to xpath_value_type; xpath_type_t is deprecated and will be removed in version 1.0
|
# xpath_type_t enumeration was renamed to xpath_value_type; xpath_type_t is deprecated and will be removed in version 1.0
|
||||||
|
|
||||||
[h5 8.11.2009 - version 0.5]
|
[h5 8.11.2009 - version 0.5]
|
||||||
@ -1265,7 +1265,6 @@ Classes:
|
|||||||
* void remove_attribute(const char_t* name);
|
* void remove_attribute(const char_t* name);
|
||||||
* void remove_child(const xml_node& n);
|
* void remove_child(const xml_node& n);
|
||||||
* void remove_child(const char_t* name);
|
* void remove_child(const char_t* name);
|
||||||
* template <typename OutputIterator> void all_elements_by_name(const char_t* name, OutputIterator it) const
|
|
||||||
* template <typename Predicate> xml_attribute find_attribute(Predicate pred) const
|
* template <typename Predicate> xml_attribute find_attribute(Predicate pred) const
|
||||||
* template <typename Predicate> xml_node find_child(Predicate pred) const
|
* template <typename Predicate> xml_node find_child(Predicate pred) const
|
||||||
* template <typename Predicate> xml_node find_node(Predicate pred) const
|
* template <typename Predicate> xml_node find_node(Predicate pred) const
|
||||||
|
|||||||
@ -791,6 +791,25 @@ namespace pugi
|
|||||||
explicit xml_node(xml_node_struct* p);
|
explicit xml_node(xml_node_struct* p);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
template <typename OutputIterator> void all_elements_by_name_helper(const char_t* name, OutputIterator it) const
|
||||||
|
{
|
||||||
|
if (!_root) return;
|
||||||
|
|
||||||
|
for (xml_node node = first_child(); node; node = node.next_sibling())
|
||||||
|
{
|
||||||
|
if (node.type() == node_element)
|
||||||
|
{
|
||||||
|
if (impl::strequal(name, node.name()))
|
||||||
|
{
|
||||||
|
*it = node;
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.first_child()) node.all_elements_by_name_helper(name, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template <typename OutputIterator> void all_elements_by_name_w_helper(const char_t* name, OutputIterator it) const
|
template <typename OutputIterator> void all_elements_by_name_w_helper(const char_t* name, OutputIterator it) const
|
||||||
{
|
{
|
||||||
if (!_root) return;
|
if (!_root) return;
|
||||||
@ -1241,24 +1260,12 @@ namespace pugi
|
|||||||
*
|
*
|
||||||
* \param name - node name
|
* \param name - node name
|
||||||
* \param it - output iterator (for example, std::back_insert_iterator (result of std::back_inserter))
|
* \param it - output iterator (for example, std::back_insert_iterator (result of std::back_inserter))
|
||||||
|
*
|
||||||
|
* \deprecated This function is deprecated
|
||||||
*/
|
*/
|
||||||
template <typename OutputIterator> void all_elements_by_name(const char_t* name, OutputIterator it) const
|
template <typename OutputIterator> PUGIXML_DEPRECATED void all_elements_by_name(const char_t* name, OutputIterator it) const
|
||||||
{
|
{
|
||||||
if (!_root) return;
|
all_elements_by_name_helper(name, it);
|
||||||
|
|
||||||
for (xml_node node = first_child(); node; node = node.next_sibling())
|
|
||||||
{
|
|
||||||
if (node.type() == node_element)
|
|
||||||
{
|
|
||||||
if (impl::strequal(name, node.name()))
|
|
||||||
{
|
|
||||||
*it = node;
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (node.first_child()) node.all_elements_by_name(name, it);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -132,6 +132,26 @@ TEST_XML(dom_node_find_child_by_attribute_w, "<node><child1 attr='value1'/><chil
|
|||||||
CHECK(node.find_child_by_attribute_w(STR("attr3"), STR("val*[0123456789]")) == xml_node());
|
CHECK(node.find_child_by_attribute_w(STR("attr3"), STR("val*[0123456789]")) == xml_node());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_XML(dom_node_all_elements_by_name, "<node><child><child/><child/></child></node>")
|
||||||
|
{
|
||||||
|
std::vector<xml_node> v;
|
||||||
|
|
||||||
|
v.clear();
|
||||||
|
xml_node().all_elements_by_name(STR("node"), std::back_inserter(v));
|
||||||
|
CHECK(v.empty());
|
||||||
|
|
||||||
|
v.clear();
|
||||||
|
doc.all_elements_by_name(STR("node"), std::back_inserter(v));
|
||||||
|
CHECK(v.size() == 1 && v[0] == doc.child(STR("node")));
|
||||||
|
|
||||||
|
v.clear();
|
||||||
|
doc.all_elements_by_name(STR("child"), std::back_inserter(v));
|
||||||
|
CHECK(v.size() == 3);
|
||||||
|
CHECK(v[0] == doc.child(STR("node")).child(STR("child")));
|
||||||
|
CHECK(v[1] == doc.child(STR("node")).child(STR("child")).first_child());
|
||||||
|
CHECK(v[2] == doc.child(STR("node")).child(STR("child")).last_child());
|
||||||
|
}
|
||||||
|
|
||||||
TEST_XML(dom_node_all_elements_by_name_w, "<node><child><child/><child/></child></node>")
|
TEST_XML(dom_node_all_elements_by_name_w, "<node><child><child/><child/></child></node>")
|
||||||
{
|
{
|
||||||
std::vector<xml_node> v;
|
std::vector<xml_node> v;
|
||||||
|
|||||||
@ -391,26 +391,6 @@ TEST_XML(dom_node_find_child_by_attribute, "<node><child1 attr='value1'/><child2
|
|||||||
CHECK(node.find_child_by_attribute(STR("attr3"), STR("value")) == xml_node());
|
CHECK(node.find_child_by_attribute(STR("attr3"), STR("value")) == xml_node());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_XML(dom_node_all_elements_by_name, "<node><child><child/><child/></child></node>")
|
|
||||||
{
|
|
||||||
std::vector<xml_node> v;
|
|
||||||
|
|
||||||
v.clear();
|
|
||||||
xml_node().all_elements_by_name(STR("node"), std::back_inserter(v));
|
|
||||||
CHECK(v.empty());
|
|
||||||
|
|
||||||
v.clear();
|
|
||||||
doc.all_elements_by_name(STR("node"), std::back_inserter(v));
|
|
||||||
CHECK(v.size() == 1 && v[0] == doc.child(STR("node")));
|
|
||||||
|
|
||||||
v.clear();
|
|
||||||
doc.all_elements_by_name(STR("child"), std::back_inserter(v));
|
|
||||||
CHECK(v.size() == 3);
|
|
||||||
CHECK(v[0] == doc.child(STR("node")).child(STR("child")));
|
|
||||||
CHECK(v[1] == doc.child(STR("node")).child(STR("child")).first_child());
|
|
||||||
CHECK(v[2] == doc.child(STR("node")).child(STR("child")).last_child());
|
|
||||||
}
|
|
||||||
|
|
||||||
struct find_predicate_const
|
struct find_predicate_const
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user