精华内容
下载资源
问答
  • VC读写XML文件

    2014-03-11 12:40:37
    VC 使用msxml3.dll或msxml6.dll动态链接库中的函数读写XML文件。配套博文解说http://blog.csdn.net/qq2399431200/article/details/17583171
  • vc 读写xml文件

    2010-08-04 13:46:58
    vc++通过MSXML读写xml文件,含源代码。
  • VC 读写XML文件类库

    2012-04-25 09:11:39
    XML文件读写操作类封装的代码, 可以根据XML文件格式进行灵活的读写操作、获取标签、节点的属性等……
  • VC 读写XML文件实例运用

    热门讨论 2013-12-26 15:00:41
    VC项目中实现读写XML文件,包中有两个工程启动文件--VC6的.dsp和VS2010的.sln文件。代码中注释详细,包中另附“xml学习笔记.txt”文档,总结了针对xml读写操作的常用函数。
  • VC读取XML文件数据

    热门讨论 2011-12-14 23:12:10
    vc++读取XML文件数据,同时包含一款皮肤和声音播放功能。
  • vc 读取XML文件

    2013-11-12 12:52:21
    vc++程序,读取xml文件的所有节点内容,并显示在列表框中。
  • VC读写XML文档

    千次阅读 2014-10-12 22:45:02
    实验环境:VC++6.0 ,windows XP 需要安装MSXML 4.0 SP2 ... 实现的功能是初始化XML文档读取特定节点,和创建新节点删除节点...XML文件如下所示:    首先我们要实现的功能是:创建一个如图所示

    转载http://blog.sina.com.cn/s/blog_4b5039210100issi.html


    实验环境:VC++6.0 ,windows XP   需要安装MSXML 4.0 SP2

         实现的功能是初始化XML文档,读取特定节点,和创建新节点删除节点等操作。XML文件如下所示:

     

    VC读写XML文档(一)

        首先我们要实现的功能是:创建一个如图所示的XML文档

        在VC中创建基于对话框的MFC工程。主对话框实现下面的摆放。

    VC读写XML文档(一)

        主要功能为:初始化XML文档,是初始化如第一幅图所示的XML,登陆即按照XML中的用户账号信息进行登陆,分为管理员身份和普通用户身份。

        程序刚运行时,已经有初始化的XML文档在程序文件夹下。此时只有登陆按钮可用。

    管理员登陆以后:登陆按钮变为不可用,其他按钮均变为可用;(只有管理员有权初始化,创建和删除用户)。

        普通用户登陆以后:只有注销按钮可用,其余全为不可用。

        对话框各控件ID和关联变量如下图:

    VC读写XML文档(一)


        在实现功能之前,需要做下面几步:

    1.     StdAfx.h中引入动态链接库

    MSXML.DLL(C:\windows\system32\msxml.dll)

    #import <msxml4.dll>

    2. APP类的InitInstance函数里面加入如下代码:
       AfxOleInit();  //Com
    口初始化

    3.在我们要操作XMLcpp文件开始部分加入:

       using namespace MSXML2;

    4. 为了实现用户的权限控制,在Dlg类的OnInitDialog()函数中添加:

        //初始化只有登陆按钮可用

        GetDlgItem(IDC_CREATE)->EnableWindow(false);  

        GetDlgItem(IDC_DELETE)->EnableWindow(false);

        GetDlgItem(IDC_LOGOUT)->EnableWindow(false);

        GetDlgItem(IDC_INITIAL)->EnableWindow(false);


    功能实现部分:

      初始化XML

    在按钮初始化XML”的响应函数OnInitial_XML()里面加入下面的代码:

    void CXML_DatabaseDlg::OnInitial_XML()

    {

        // TODO: Add your control notification handler code here

        //创建XML文件

        UpdateData(TRUE);

        MSXML2::IXMLDOMDocumentPtr pDoc;

        MSXML2::IXMLDOMElementPtr xmlRoot;

    //创建DOMDocument对象

        HRESULT hr = pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));

        if (FAILED(hr))

        {

            MessageBox("无法创建DOM文件对象,检查是否安装MS XML Parser运行库!");

            return;

        }

        //根节点名称为Account

        //创建元素并添加到文档中

        xmlRoot = pDoc->createElement_x((_bstr_t)"Account");

        pDoc->appendChild(xmlRoot);

        //创建一个节点

        MSXML2::IXMLDOMElementPtr pNode;

        //添加用户

        pNode = pDoc->createElement_x((_bstr_t)"USER");

        pNode->setAttribute("id","admin");

        pNode->setAttribute("password","admin");

        pNode->setAttribute("persimmon","admin");

        xmlRoot->appendChild(pNode);

        //添加用户

        pNode = pDoc->createElement_x((_bstr_t)"USER");

        pNode->setAttribute("id","monitor1");

        pNode->setAttribute("password","monitor1");

        pNode->setAttribute("persimmon","user");

        xmlRoot->appendChild(pNode);

        //添加用户

        pNode = pDoc->createElement_x((_bstr_t)"USER");

        pNode->setAttribute("id","monitor2");

        pNode->setAttribute("password","monitor2");

        pNode->setAttribute("persimmon","user");

        xmlRoot->appendChild(pNode);

        //保存文件,不存在就建立,存在就覆盖

        pDoc->save("account.xml");

        m_List.InsertString(-1,"XML初始化成功........");

    }

     

      登陆(读取XML

    首先要做一个登陆对话框,如下图所示:

    VC读写XML文档(一)


    然后登陆对话框的控件ID和关联变量如下图所示:

    VC读写XML文档(一)

    CXML_DatabaseDlg 中添加public变量: CLoginDlg logdlg;

    给“登陆”按钮添加响应函数OnLogin()。添加如下代码:

    void CXML_DatabaseDlg::OnLogin()

    {

        // TODO: Add your control notification handler code here

        if(logdlg.DoModal()==IDOK)

        {

            CString username="",username_in="";   //用户名,密码

            CString password="",password_in="";

            CString permission="";

            //得到输入的用户名和密码

            username_in = logdlg.m_name;      

            password_in = logdlg.m_password;

            if (username_in==""||password_in=="")

            {

                MessageBox("用户名或者密码不能为空!");

                return;

            }

            MSXML2::IXMLDOMDocumentPtr pDoc;

            HRESULT hr;

            hr = pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));

            if (FAILED(hr))

            {

                MessageBox("无法创建DOM对象,检查是否安装了MS XML Parser运行库!");

                return;

            }

            //加载xml文档

            pDoc->load("account.xml");

    //得到根节点

            MSXML2::IXMLDOMElementPtr pRoot = pDoc->GetdocumentElement();    

            MSXML2::IXMLDOMNodeListPtr pNodeList =  pRoot->GetchildNodes();  

    //得到所有的节点列表

    MSXML2::IXMLDOMNamedNodeMapPtr pNodeAttributes;                   //某个节点所有的属性

            MSXML2::IXMLDOMNodePtr pNode,pid,ppassword,ppermission;

            //遍历所有USER节点

            long nodecount=0;

            pNodeList->get_length(&nodecount);

            _variant_t id_value,password_value,permission_value;

    //存储节点属性值

            for (long i=0;i<nodecount;i++)

            {

                pNode = pNodeList->Getitem(i);

                pNodeAttributes = pNode->Getattributes();

     //得到每一个节点的所有属性

                //遍历一个节点的所有属性id,password,permission

                pid = pNodeAttributes->Getitem(0);

                id_value = pid->GetnodeValue();           

    //得到这个节点的id属性值

                username = (char *)(_bstr_t)id_value;

                if (username==username_in)

                {

                    ppassword = pNodeAttributes->Getitem(1); 

          //如果id匹配,接着比较password

                    password_value = ppassword->GetnodeValue();

                    password = (char *)(_bstr_t)password_value;

                    if (password==password_in)

                    {              

                       //id ,password都正确,得到用户权限

                        ppermission = pNodeAttributes->Getitem(2);

                        permission_value = ppermission->GetnodeValue();

                        permission = (char *)(_bstr_t)permission_value;

                        if (permission=="admin")

                        {

                            m_List.InsertString(-1,"管理员"+logdlg.m_name+"登陆成功......");

    GetDlgItem(IDC_CREATE)->EnableWindow(true)

                             GetDlgItem(IDC_DELETE)->EnableWindow(true);

                                 GetDlgItem(IDC_LOGIN)->EnableWindow(false);

    GetDlgItem(IDC_LOGOUT)->EnableWindow(true);

                            return;

                        }

                        else

                        {

                            m_List.InsertString(-1,"普通用户"+logdlg.m_name+"登陆成功......");

    GetDlgItem(IDC_LOGOUT)->EnableWindow(true);

                            return;

                        }      

                    }

                    else

                    {

                        MessageBox("密码错误!");

                        return;

                    }

                }

                else if(i==nodecount-1)

                {

                    MessageBox("用户不存在");

                    return;

                }

            }

        }  

    }

      注销

    注销主要做的就是使一些按钮不可用,如下所示:

    给“注销”按钮添加响应函数 OnLogOut(),并添加如下代码:

    void CXML_DatabaseDlg::OnLogout()

    {

        // TODO: Add your control notification handler code here

        GetDlgItem(IDC_CREATE)->EnableWindow(false);

        GetDlgItem(IDC_DELETE)->EnableWindow(false);

        GetDlgItem(IDC_LOGIN)->EnableWindow(true);

        GetDlgItem(IDC_LOGOUT)->EnableWindow(false);

        GetDlgItem(IDC_INITIAL)->EnableWindow(false);

    m_List.InsertString("用户"+logdlg.m_name+"成功注销!");

        logdlg.m_name="";

        logdlg.m_password="";

    }

    四  创建用户(添加XML节点)

        创建一个添加用户的对话框。类似于登陆对话框,各个控件如下,关联变量:

     

    VC读写XML文档(三)



    给创建用户按钮添加响应函数OnCreateUser();添加代码如下:

    void CXML_DatabaseDlg::OnCreateUser()

    {

        // TODO: Add your control notification handler code here

        CAddUserDlg adddlg;

        CString add_username,add_password,tmpStr="";

       

        if (adddlg.DoModal()==IDOK)

        {

            add_username=adddlg.m_newid;

            add_password=adddlg.m_newpassword;

            if(add_username==""||add_password=="")

            {

                MessageBox("用户名或密码不能为空!");

                return;

            }

            //判断用户名是否已存在

            MSXML2::IXMLDOMDocumentPtr pDoc;

            HRESULT hr;

            hr = pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));

            //加载xml文档

            pDoc->load("account.xml");

            //得到根节点

            MSXML2::IXMLDOMElementPtr pRoot = pDoc->GetdocumentElement();

            //得到所有的节点列表

            MSXML2::IXMLDOMNodeListPtr pNodeList =  pRoot->GetchildNodes();  

            //某个节点所有的属性

            MSXML2::IXMLDOMNamedNodeMapPtr pNodeAttributes;              

            MSXML2::IXMLDOMNodePtr pNode,pid;

            //遍历所有USER节点

            long nodecount=0;

            pNodeList->get_length(&nodecount);

            _variant_t id_value; //存储节点id属性值

            for (long i=0;i<nodecount;i++)

            {

                pNode = pNodeList->Getitem(i);

                //得到每一个节点的所有属性

                pNodeAttributes = pNode->Getattributes();

                //遍历一个节点的所有属性id,password,permission

                pid = pNodeAttributes->Getitem(0);

                //得到这个节点的id属性值

                id_value = pid->GetnodeValue();           

                tmpStr = (char *)(_bstr_t)id_value;

                if (add_username==tmpStr)

                {

                    //用户名已存在

                    MessageBox("用户名已存在!");

                    return;

                }

            }

            MSXML2::IXMLDOMElementPtr pNewnode = pDoc->createElement_x("USER");

            pNewnode->setAttribute("id",(const char*)add_username);

            pNewnode->setAttribute("password",(const char*)add_password);

            pNewnode->setAttribute("permission",(const char*)"user");

            pRoot->appendChild(pNewnode);

            pDoc->save("account.xml");

            m_List.InsertString(-1,"新用户"+add_username+"创建成功...");

            MessageBox("新用户"+add_username+"创建成功!");

        }

    五  删除用户(删除XML节点)

        首先要创建一个删除用户的对话框,两个按钮,一个接受输入用户名的编辑框。各个控件和关联变量如下图所示:

     

    VC读写XML文档(三)



    给删除用户按钮添加响应函数OnDeleteUser(),添加代码:

    void CXML_DatabaseDlg::OnDeleteUser()

    {

        // TODO: Add your control notification handler code here

        CDeleteUserDlg deletedlg;

        CString tmpStr="",delete_username;

        if (deletedlg.DoModal()==IDOK)

        {

           delete_username=deletedlg.m_tobedelete;

            //判断用户名密码是否为空

            if (delete_username=="")

            {

                //用户名不能为空

                MessageBox("用户名不能为空!");

                return;

            }

            else if (delete_username==logdlg.m_name)

            {

                //无法删除当前登陆的用户

                MessageBox("不能删除管理员用户!");

                return;

            }

            //删除节点

            MSXML2::IXMLDOMDocumentPtr pDoc;

            HRESULT hr;

            hr = pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));

            //加载xml文档

            pDoc->load("account.xml");

            //得到根节点

            MSXML2::IXMLDOMElementPtr pRoot = pDoc->GetdocumentElement(); 

            //得到所有的节点列表

            MSXML2::IXMLDOMNodeListPtr pNodeList =  pRoot->GetchildNodes();

            //某个节点所有的属性

            MSXML2::IXMLDOMNamedNodeMapPtr pNodeAttributes;                  

            MSXML2::IXMLDOMNodePtr pNode,pid;

            //遍历所有USER节点

            long nodecount=0;

            pNodeList->get_length(&nodecount);

            _variant_t id_value; //存储节点id属性值

            for (long i=0;i<nodecount;i++)

            {

                pNode = pNodeList->Getitem(i);

                //得到每一个节点的所有属性

                pNodeAttributes = pNode->Getattributes(); 

                //遍历一个节点的所有属性id,password,permission

                pid = pNodeAttributes->Getitem(0);

                //得到这个节点的id属性值

                id_value = pid->GetnodeValue();           

                tmpStr = (char *)(_bstr_t)id_value;

                if (tmpStr==delete_username)

                {

                    pRoot->removeChild(pNode);

                    pDoc->save("account.xml");

                    m_List.InsertString(-1,"用户"+delete_username+"已成功删除!");

                    MessageBox("用户"+delete_username+"已成功删除!");

                    return; //删除成功

                }

            }

        MessageBox("无法删除不存在的用户");

        }

    }



    展开全文
  • 经过笔者多年编写系统经验开发,能自动建立XML文件头,根据自定义的HEAD和BODY等建立相应的表项,进行新建、插入、修改,读取、删除等操作,该CLASS已经得到了广泛的应用,对使用XML作为基本配置文件很有帮助!
  • vc读写XML文件的源码.pdf

    热门讨论 2011-10-10 21:14:52
    vc读写XML文件的源码.pdf vc读写XML文件的源码.pdf vc读写XML文件的源码.pdf
  • VC读写XML文件的方法

    2010-02-06 22:24:46
    建立一个基于Dialog的MFC工程,工程名为OperateXML,然后在对话框上添加两个按钮
  • C++ Builder读取XML tinyxml;包含示例程序;通过map, S_Group> s_config;可获取对应的xml对象。给定gid和id即可;VC替换代码中AnsiString即可 MyXmlLoader::GetInstance()->s_config; <?xml version="1.0" ...
  • vc 读写xml文件实例

    2009-07-02 13:08:51
    vc 读写xml文件实例 xml是一种严格的标记语言格式,由于其语法严谨,在很多数据交换场合大量地使用xml
  • vc xml 读取

    2013-09-26 23:50:09
    #include <msxml.h> #import //读取XML文档 MSXML2::IXMLDOMDocumentPtr pDoc; //创建文档对象 MSXML2::IXMLDOMNodePtr pNode;
  • VC读写xmlDemo

    2017-06-16 09:12:33
    程序是用MFC实现的一个读写xml文件的示例程序,供学习参考。
  • VC 读取XML文件

    千次阅读 2010-02-01 18:06:00
    xml version="1.0" ?>PMP> Setup> Power> PowerOff value="0" /> LCDOff value="0" /> Power> Battery> LCDOff value="0" /> PowerOff value

    <?xml version="1.0" ?>
    <PMP>
       
    <Setup>
            
    <Power>
               
    <PowerOff value="0" />
               
    <LCDOff value="0" />
           
    </Power>
           
    <Battery>
               
    <LCDOff value="0" />
               
    <PowerOff value="0" />
           
    </Battery>
           
    <MosaicSize>
               
    <VideoMosaicSize value="7" />
               
    <PhotoMosaicSize value="4" />
           
    </MosaicSize>
           
    <ScreenSaver>
               
    <ScreenSaver value="0" />
               
    <SaverChoice value="1" />
           
    </ScreenSaver>
       
    </Setup>
    </PMP>

    有以上的XML文件来进行读取里面的value值。

     

    首先:

    #import  "msxml3.dll"   
    using  namespace  MSXML2; 

    ::CoInitialize(NULL);  初始化

    下面就是读取指定结点的值.

     

    IXMLDOMDocument2Ptr  xml; 
     xml.CreateInstance(__uuidof(MSXML2::DOMDocument)); 
     xml->load("E://boot1.xml"); 

     
      MSXML2::IXMLDOMElementPtr  nodeI, Elemen;
     CString  strRoot;   
     strRoot = "/PMP/Setup/MosaicSize/VideoMosaicSize"; 
     node=xml->selectSingleNode(_bstr_t(strRoot));
     strRoot = "/PMP/Setup/MosaicSize/PhotoMosaicSize"; 
     Elemen=xml->selectSingleNode(_bstr_t(strRoot));  
     if(node!=NULL && Elemen!=NULL)
     { 

      _variant_t vt = node->getAttribute("value");
             CString strValue = vt.bstrVal;
             int nValue = atoi(strValue);

       vt = Elemen->getAttribute("value");
             strValue = vt.bstrVal;
             int Value = atoi(strValue);  
     }

    运行之后就可以得到想要结点的值!!

    展开全文
  • VC++ tinyxml读写XML文件

    热门讨论 2012-04-24 11:02:18
    VS下面使用一个能读写操作XML文件的包。方便。 使用例子:http://blog.csdn.net/goodai007/article/details/7492773
  • 内容索引:VC/C++源码,文件操作,XML 使用XML文件读写图像,可以点击浏览图像、保存XML图像,显示XML图像等。
  • 如何用vc创建和读取xml文件

    热门讨论 2011-11-12 17:38:00
    MSXML解析器允许你装载和创建一个文档,收集文档的错误信息,得到和操作文档中的所有的信息和结构,并把文档保存在一个XML文件中。DOM提供给用户一个接口来装载、到达和操作并序列化XML文档。DOM提供了对存储在内存...
  • visual c++ VC操作读写XML

    2021-01-20 21:09:53
    visual c++ VC操作读写XML
  • VC++读写XML文件

    千次阅读 2012-08-06 16:20:15
    VC6中建立一个基于Dialog的工程。如图: 在界面上放置3个编辑框、1个按钮控件。其中属性设置如下。 编辑框: ID Category Variable Type Variable Name IDC_ID Value CString m_...

    1、安装MSXML 4.0 SP2。在VC6中建立一个基于Dialog的工程。如图:

    XML.JPG

    在界面上放置3个编辑框、1个按钮控件。其中属性设置如下。
    编辑框:

    ID CategoryVariable TypeVariable Name
    IDC_IDValueCStringm_strId
    IDC_AUTHORValueCStringm_strAuthor
    IDC_TITLEValueCStringm_strTitle
    按钮:
    ID Caption
    IDC_GENERATEGenerate
    IDC_LOADLoad


    2、在StdAfx.h中引入动态链接库 MSXML.DLL(C:/windows/system32/msxml4.dll)


    #import <msxml4.dll>

    3.在我们要操作XMLcpp文件开始部分加入:

       using namespace MSXML2;


    4、双击Generate按钮,在消息处理函数中添加如下代码:

    ::CoInitialize(NULL); //初始化COM


    UpdateData(TRUE);
    MSXML2::IXMLDOMDocumentPtr pDoc; 
    MSXML2::IXMLDOMElementPtr  xmlRoot ; 
    //创建DOMDocument对象

    HRESULT hr =  pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); 
    if(!
    SUCCEEDED(hr)) 
    {  
     MessageBox(
    "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"
    ); 
     
    return
     ;
    }
     
    //
    根节点的名称为Book
    //创建元素并添加到文档中

    xmlRoot=pDoc->createElement((_bstr_t)"Book " );
    //设置属性

    xmlRoot->setAttribute("id",( const char * )m_strId);
    pDoc
    ->
    appendChild(xmlRoot);
    MSXML2::IXMLDOMElementPtr pNode;
    //添加“author”元素

    pNode=pDoc->createElement((_bstr_t)"Author " );
    pNode
    ->Puttext((_bstr_t)(const char  *
    )m_strAuthor);
    xmlRoot
    ->
    appendChild(pNode);
    //添加“Title”元素

    pNode=pDoc->createElement("Title " );
    pNode
    ->Puttext((const char  *
    )m_strTitle);
    xmlRoot
    ->
    appendChild(pNode);
    //
    保存到文件 
    //如果不存在就建立,存在就覆盖 

    pDoc->save("d://he.xml");

    双击Load按钮,在消息处理函数中添加如下代码:

    MSXML2::IXMLDOMDocumentPtr pDoc;
    HRESULT hr;
    hr
    =
    pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
    if
    (FAILED(hr))
    {  
     MessageBox(
    "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"
    ); 
     
    return
     ;
    }
     
    //加载文件 

    pDoc->load("d://he.xml" ); 
    MSXML2::IXMLDOMNodePtr  pNode;
    //在树中查找名为Book的节点,"//"表示在任意一层查找 

    pNode=pDoc->selectSingleNode("//Book " );
    MSXML2::DOMNodeType nodeType; 
    //得到节点类型 

    pNode->get_nodeType(& nodeType); 
    //节点名称 

    CString strName;
    strName
    =(char  *)pNode->
    GetnodeName();
    //节点属性,放在链表中 

    MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap= NULL;
    MSXML2::IXMLDOMNodePtr   pAttrItem;
    _variant_t variantvalue;
    pNode
    ->get_attributes(&
    pAttrMap);
    long
     count;
    count
    =pAttrMap->get_length(&
    count);
    pAttrMap
    ->get_item(0,&
    pAttrItem);
    //取得节点的值

    pAttrItem->get_nodeTypedValue(& variantvalue);
    m_strId
    =(char  *
    )(_bstr_t)variantvalue;
    UpdateData(FALSE);

     

     

    浏览XML

     ::CoInitialize(NULL); //初始化COM
     MSXML2::IXMLDOMDocumentPtr pDoc;
     HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
     if(!SUCCEEDED(hr))
     {
      MessageBox("Error!");
      return;
     }

     pDoc->load("E:\\test.xml");
     MSXML2::IXMLDOMElementPtr childNode;
     MSXML2::IXMLDOMElementPtr childNode1;
     MSXML2::IXMLDOMNodeListPtr nodeList;
     MSXML2::IXMLDOMNodeListPtr nodeList1;
     childNode1 = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//video"));//选中节点
     nodeList = childNode1->GetchildNodes();//子节点列表
    // MSXML2::DOMNodeType nodeType;
    // nodeList=pDoc->getElementsByTagName_r("avi");//获取所有名为avi的节点,可以在bitmap节中介入avi节实验

     MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
     MSXML2::IXMLDOMNodePtr pAttrItem;
     MSXML2::IXMLDOMNodePtr pAttrItem1;
     
     long nCount, iCount;
     nodeList->get_length(&iCount); //获取节点个数
     BOOL bDel = FALSE;
     for(int i=0 ;i<iCount; i++) //根据需要可以添加数据到ListControl中
     {
      childNode = nodeList->Getitem(i).Detach();//得到一个节点

      childNode->get_attributes(&pAttrs);
      pAttrs->get_length(&nCount); //获取节点属性个数
       nodeList->get_item(i, &pAttrItem1);
      for(int j = 0; j < nCount; j++)
      {
       pAttrs->get_item(j, &pAttrItem);
       CString strAttrName = (char*)(_bstr_t)pAttrItem->nodeName;
       CString strAttrValue = (char*)(_bstr_t)pAttrItem1->nodeTypedValue;
      }
     }

     

    展开全文
  • VCXML文件的一个简单例子,参照了别人的一个类似的程序,修改为符合自己需要的XML读写示例
  • VC 读取及操作XML文件的代码实例,比如读取XML文件中的各个节点数据,并以表格形式返回读取到的节点值,显示XML文件的内容结构,对在VC 环境下操作XML文件有些许帮助。
  • VC读取XML中的数据信息,分属性和每个节点元素分别读取。
  • VC读写XML文件

    千次阅读 2008-03-11 16:41:00
    VC6中建立一个基于Dialog的工程。如图:在界面上放置3个编辑框、1个按钮控件。其中属性设置如下。编辑框:ID Category Variable Type Variable Name IDC_ID Value CString m_strId IDC_AUTHOR Value CStr

    1、安装MSXML 4.0 SP2。在VC6中建立一个基于Dialog的工程。如图:

    XML.JPG

    在界面上放置3个编辑框、1个按钮控件。其中属性设置如下。
    编辑框:

    ID Category Variable Type Variable Name
    IDC_ID Value CString m_strId
    IDC_AUTHOR Value CString m_strAuthor
    IDC_TITLE Value CString m_strTitle

    按钮:

    ID Caption
    IDC_GENERATE Generate
    IDC_LOAD Load


    2、在App类的InitInstance函数里面加入如下代码:


    // Com口初始化
    AfxOleInit();


    3、在StdAfx.h中引入动态链接库 MSXML.DLL(C:/windows/system32/msxml4.dll)


    #import  < msxml4.dll >


    4、双击Generate按钮,在消息处理函数中添加如下代码:

     

    UpdateData(TRUE);
    MSXML2::IXMLDOMDocumentPtr pDoc; 
    MSXML2::IXMLDOMElementPtr  xmlRoot ; 
    // 创建DOMDocument对象

    HRESULT hr  =  pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); 
    if ( !
    SUCCEEDED(hr)) 
    {  
     MessageBox(
    " 无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! "
    ); 
     
    return
     ;
    }
     
    //
    根节点的名称为Book
    // 创建元素并添加到文档中

    xmlRoot = pDoc -> createElement((_bstr_t) " Book " );
    // 设置属性

    xmlRoot -> setAttribute( " id " ,( const   char   * )m_strId);
    pDoc
    ->
    appendChild(xmlRoot);
    MSXML2::IXMLDOMElementPtr pNode;
    // 添加“author”元素

    pNode = pDoc -> createElement((_bstr_t) " Author " );
    pNode
    -> Puttext((_bstr_t)( const   char   *
    )m_strAuthor);
    xmlRoot
    ->
    appendChild(pNode);
    // 添加“Title”元素

    pNode = pDoc -> createElement( " Title " );
    pNode
    -> Puttext(( const   char   *
    )m_strTitle);
    xmlRoot
    ->
    appendChild(pNode);
    //
    保存到文件 
    // 如果不存在就建立,存在就覆盖 

    pDoc -> save( " d://he.xml " );

    双击Load按钮,在消息处理函数中添加如下代码:

    MSXML2::IXMLDOMDocumentPtr pDoc;
    HRESULT hr;
    hr
    =
    pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
    if
    (FAILED(hr))
    {  
     MessageBox(
    " 无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! "
    ); 
     
    return
     ;
    }
     
    // 加载文件 

    pDoc -> load( " d://he.xml " ); 
    MSXML2::IXMLDOMNodePtr  pNode;
    // 在树中查找名为Book的节点," // "表示在任意一层查找 

    pNode = pDoc -> selectSingleNode( " //Book " );
    MSXML2::DOMNodeType nodeType; 
    // 得到节点类型 

    pNode -> get_nodeType( & nodeType); 
    // 节点名称 

    CString strName;
    strName
    = ( char   * )pNode ->
    GetnodeName();
    // 节点属性,放在链表中 

    MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap = NULL;
    MSXML2::IXMLDOMNodePtr   pAttrItem;
    _variant_t variantvalue;
    pNode
    -> get_attributes( &
    pAttrMap);
    long
     count;
    count
    = pAttrMap -> get_length( &
    count);
    pAttrMap
    -> get_item( 0 , &
    pAttrItem);
    // 取得节点的值

    pAttrItem -> get_nodeTypedValue( & variantvalue);
    m_strId
    = ( char   *
    )(_bstr_t)variantvalue;
    UpdateData(FALSE);

     

     

    更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn

     

     

    展开全文
  • VC 结合XML文件备份远程数据库,主程序分为客户端和服务端,实现的原理及思路:采用VC6.0生成两个工程文件:DBClent(客户端及接收方)和DBServer(服务端及发送方)。其中DBClient负责接收XML库格式文件并生成数据库,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,634
精华内容 3,053
关键字:

vc读取xml文件