注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

MFC到wxWidgets移植笔记(12)——XML操作  

2008-05-22 00:43:12|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

作为当前最流行的通用格式xml,wxWidgets同样提供了非常方便的xml类库。由于用起来实在是太舒服了,以至于让我完全兴不起重新封装的念头。

要使用xml类库,除了编译xml模块外,还要先编译expat模块,xml模块必须用到此模块。expat没有在wxWidgets的默认工程中,需要自己手动编译。找到src下的expat,打开并分别编译debug和release版本,会分别生成expat.lib和expatd.lib。然后再编译xml模块。

要在工程中使用xml,首先是将expat.h拷贝到include目录中,在stdafx.h中添加#include ,然后在工程设置中为lib中添加wxbase28u_xml.lib和expat.lib(Debug版本为wxbase28ud_xml.lib和expatd.lib)。

以下是使用方式,先说读(只用过DOM模式读xml文档)。DOM的根类是wxXmlDocument:

        wxXmlDocument doc;
        doc.Load(file);

打开文件后,就可以直接取子节点了:

        wxXmlNode *child = doc.GetRoot()->GetChildren();
        while (child)
        {
            if (child->GetName() == wxT("store"))
            {
                ImportBank(id, child);
            }
            child = child->GetNext();
        }

GetRoot()获得根节点,wxXmlNode是所有节点的基类,函数GetChildren()获得最左边的子孩子,函数GetNext()获得右孩子结点,函数GetName()获得节点名称,函数GetPropVal()获得属性。

以下是写的一个例子:

    wxXmlDocument doc;

    doc.SetVersion(wxT("1.0"));
    doc.SetFileEncoding(wxT("UTF-8"));

    

    wxXmlNode* root = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("wallet"));
    root->AddProperty(wxT("user"), name);
    root->AddProperty(wxT("pass"), pass);
    root->AddProperty(wxT("version"), wxT("1.0"));
    doc.SetRoot(root);


    wxXmlNode* cash = new wxXmlNode(root, wxXML_ELEMENT_NODE, wxT("cash"));
 

    doc.Save(file);

 

  评论这张
 
阅读(18)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017