资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

CMarkup类操作Xml的示例分析-创新互联

这篇文章给大家分享的是有关CMarkup类操作Xml的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联主要业务有网站营销策划、成都做网站、网站设计、微信公众号开发、成都小程序开发、H5技术、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、成都全网营销资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。 

一、下载Markup.cpp 和 Markup.h

二、将此两个文件放置于工程目录下

三、在需要用到CMarkup的地方 #include "Markup.h"

当然VC中还需要配置一下环境

在VC6.0下:

a.在Markup.cpp的顶端加上 #include"stdafx.h" 或者

b.关闭Markup.cpp的预编译头设置,具体方法如下:

Project->Setting  弹出ProjectSetting对话框,在左边的文件树下选择Markup.cpp,然后在 "Settings for" 下拉框下选择 "All Configurations",选择 C/C++标签页,

接着在Category下拉框下选中 "Precompiled Headers"选项,选中下面的"Not Using Precompiled Headers." 单选按钮即可

CMarkup类操作Xml的示例分析

CMarkup的基本使用:

例如要读取如下UserInfos.xml的内容

   
   
    
   WangYao   
   25   
    
    
   Hisin   
   27   
    
 

源代码如下:

CMarkup xml;  
bool    flag;  
  
//加载Xml文件  
flag = xml.Load("d:\\UserInfos.xml");  
if (!flag)  
{  
    AfxMessageBox(TEXT("加载d:\\UserInfos.xml失败,请检查"));  
    return;  
}  
  
//定位到Root Elem  
xml.ResetPos();  
flag = xml.FindElem("UserInfos");  //Root Elem为  
if (!flag)  
{  
    return;  
}  
  
xml.IntoElem();   //进入根节点  
while(xml.FindElem(TEXT("UserInfo")))  
{  
    xml.IntoElem();   //进入  
  
    //获取name节点数据  
    flag = xml.FindElem(TEXT("name"));  
    if (flag)  
    {  
        CString cstrName;  
        cstrName = xml.GetData();  
        AfxMessageBox(cstrName);  
    }  
  
    //获取age节点数据  
    xml.ResetMainPos();   //保证不管name节点和age节点的顺序如何,都能找到age节点  
    flag = xml.FindElem(TEXT("age"));  
    if (flag)  
    {  
        CString cstrAge;  
        cstrAge = xml.GetData();  
        AfxMessageBox(cstrAge);  
    }  
  
    xml.OutOfElem();  //跳出  
}  
xml.OutOfElem();  //跳出根节点

当然实现同样的功能也可以不进入UserInfo节点,源码如下,请仔细对比

xml.IntoElem();   //进入根节点  
while(xml.FindElem(TEXT("UserInfo")))  
{  
    //获取name子节点数据  
    flag = xml.FindChildElem(TEXT("name"));  
    if (flag)  
    {  
        CString cstrName;  
        cstrName = xml.GetChildData();  
        AfxMessageBox(cstrName);  
    }  
  
    //获取age子节点数据  
    xml.ResetChildPos();   //保证不管name子节点和age子节点的顺序如何,都能找到age子节点  
    flag = xml.FindChildElem(TEXT("age"));  
    if (flag)  
    {  
        CString cstrAge;  
        cstrAge = xml.GetChildData();  
        AfxMessageBox(cstrAge);  
    }  
}  
xml.OutOfElem();  //跳出根节点

Tips:

1.IntoElem与OutOfElem方法应成对使用

2.关于重置xml的Pos的函数

ResetPosResets the current position to the start of the document
ResetMainPosResets the current main position to before the first sibling
ResetChildPosResets the current child position to before the first child

3.SavePos 与 RestorePos 复原xml Pos

SavePosSaves the current position with an optional string name using a hash map
RestorePosGoes to the position saved with SavePos

比如:

...
xml.SavePos(Text("abc"));
OpXml(xml);  //该函数可能会改变xml的Pos,则可以利用SavePos与RestorePos复原该函数执行前xml的Pos
xml.RestorePos(Text("abc"));
...

感谢各位的阅读!关于“CMarkup类操作Xml的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网站题目:CMarkup类操作Xml的示例分析-创新互联
当前网址:http://cdkjz.cn/article/gcehh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220