本文整理汇总了C++中NodeContainer::endChild方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeContainer::endChild方法的具体用法?C++ NodeContainer::endChild怎么用?C++ NodeContainer::endChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeContainer
的用法示例。
在下文中一共展示了NodeContainer::endChild方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeContainer
void Writer::writeContainer(const NodeContainer& container)
{
XML::NodeContainer::const_iterator it = container.beginChild();
XML::NodeContainer::const_iterator end = container.endChild();
for (; it != end; ++it)
{
if ((*it)->type() == ELEMENT_NODE)
{
XML::ElementNodePtr child = Core::dynamic_ptr_cast<XML::ElementNode>(*it);
writeElement(child);
}
else if ((*it)->type() == TEXT_NODE)
{
XML::TextNodePtr child = Core::dynamic_ptr_cast<XML::TextNode>(*it);
m_buffer += child->text();
}
else
{
ASSERT_FALSE();
}
}
}
示例2: parse
void XPathIterator::parse(QueryIterator begin, QueryIterator end, const NodePtr& context)
{
// Finished parsing?
if (begin == end)
{
// Add to results, if valid node.
if (context.get() != nullptr)
m_results.push_back(context);
return;
}
// Skip path separator.
tstring::const_iterator it = begin;
if (*it == TXT('/'))
++it;
// Extract the node name.
tstring::const_iterator nameFirst = it;
while ( (it != end) && (*it != TXT('/')) )
++it;
tstring name(nameFirst, it);
NodeType type = context->type();
NodeContainer* nodes = nullptr;
// Has children?
if (type == DOCUMENT_NODE)
nodes = Core::static_ptr_cast<Document>(context).get();
else if (type == ELEMENT_NODE)
nodes = Core::static_ptr_cast<ElementNode>(context).get();
// Find all children that match the name.
for (NodeContainer::const_iterator nodeIter = nodes->beginChild(); nodeIter != nodes->endChild(); ++nodeIter)
{
const NodePtr& node = *nodeIter;
// If a match, recurse...
if ( (node->type() == ELEMENT_NODE)
&& (Core::static_ptr_cast<ElementNode>(node)->name() == name) )
{
parse(it, end, *nodeIter);
}
}
}