当前位置: 首页>>代码示例>>C++>>正文


C++ XmlWriter::end_element方法代码示例

本文整理汇总了C++中XmlWriter::end_element方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlWriter::end_element方法的具体用法?C++ XmlWriter::end_element怎么用?C++ XmlWriter::end_element使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XmlWriter的用法示例。


在下文中一共展示了XmlWriter::end_element方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: serielize

void XmlElement::serielize(XmlWriter &writer, int tab) const
{
    // name
    for (int i = 0; i < tab; ++i)
        writer.write_text("\t");
    writer.start_element(_name.c_str());

    // attributes
    for (const_attr_iter_t iter = _attrs.begin(), end = _attrs.end();
        iter != end; ++iter)
    {
        writer.write_attribute(iter->first.c_str(), iter->second.c_str());
    }

    // text
    bool has_child = false;
    if (!_text.empty())
    {
        if (tab >= 0)
        {
            std::string text;
            trim(_text.c_str(), &text);
            if (!text.empty())
            {
                writer.write_text("\n");
                for (int i = 0; i < tab + 1; ++i)
                    writer.write_text("\t");
                writer.write_text(text.c_str());
                has_child = true;
            }
        }
        else
        {
            writer.write_text(_text.c_str());
            has_child = true;
        }
    }

    // children and comments
    const size_t comments_size = _comments.size();
    size_t comment_pos = 0;
    for (size_t i = 0, csize = _children.size(); i < csize; ++i)
    {
        // serialize comment
        while (comment_pos < comments_size && _comments.at(comment_pos).pos <= i)
        {
            if (tab >= 0)
            {
                writer.write_text("\n");
                for (int j = 0; j < tab + 1; ++j)
                    writer.write_text("\t");
            }
            writer.write_comment(_comments.at(comment_pos).text.c_str());
            ++comment_pos;
            has_child = true;
        }

        // children element
        rc_ptr<XmlElement> c = _children.at(i);
        if (c.is_null())
            continue;
        if (tab >= 0)
            writer.write_text("\n");
        c->serielize(writer, tab >= 0 ? tab + 1 : tab);
        has_child = true;
    }

    // tail comments
    while (comment_pos < comments_size)
    {
        if (tab >= 0)
        {
            writer.write_text("\n");
            for (int j = 0; j < tab + 1; ++j)
                writer.write_text("\t");
        }
        writer.write_comment(_comments.at(comment_pos).text.c_str());
        ++comment_pos;
        has_child = true;
    }

    // finish
    if (has_child && tab >= 0)
    {
        writer.write_text("\n");
        for (int i = 0; i < tab; ++i)
            writer.write_text("\t");
    }
    writer.end_element();
}
开发者ID:,项目名称:,代码行数:90,代码来源:


注:本文中的XmlWriter::end_element方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。