首页 > Windows开发 > 详细

RapidXML 试用

时间:2014-01-26 19:43:50      阅读:522      评论:0      收藏:0      [点我收藏+]

  近半年来断断续续的封装一些SDK,在兼顾跨平台、易用性和高效率上还要顾及到对外dll的大小问题。由于之前解析SVG文件的用到了一个XML解析库xercesc,这个DLL实在巨大近4M,于是尝试用新的XML解析库替代它,查阅各种blog对比优缺点后,决定试用RapidXML,这个号称史上最快的解析库。感觉上手很容易、网上也有许多文档例子。

深度遍历SVG文件:

bubuko.com,布布扣
//解析
        file<TCHAR> fdoc(lpszFile);  
        xml_document<TCHAR>   doc;  
        doc.parse<0>(fdoc.data()); 
        
        //! 获取根节点   
        xml_node<TCHAR>* root = doc.first_node();  
        //! 获取根节点第一个节点   
        std::vector<xml_node<TCHAR>* > vNode;
        xml_node<TCHAR> * node = doc.first_node();
        
        std::vector<xml_node<TCHAR>* > vParentNode;

        while (node )
        {
            vNode.push_back(node);
            if(node->first_node() == NULL)
            {
                if (node->next_sibling() == NULL)
                {
                    node = vParentNode.back();
                    node = node->next_sibling();

                    vParentNode.pop_back();
                    while (node == NULL && !vParentNode.empty())
                    {
                        node = vParentNode.back();
                        node = node->next_sibling();
                        vParentNode.pop_back();
                    }                    
                }
                else
                {
                    node = node->next_sibling();
                }
            }
            else
            {
                vParentNode.push_back(node);
                node = node->first_node();
            }
        }
bubuko.com,布布扣

然后就用VNode解析具体内容了。

RapidXML 试用

原文:http://www.cnblogs.com/slean/p/3534259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!