VC入门宝典十一(xml)

原创 2004年02月18日 23:31:00

                                         xml

                                                  何志丹

我们建立一个xml文件,内容如图所示:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />CSDN_Dev_Image_2004-2-181133400.png

,建立一个基于对话框的程序,工程名为xml;

, 初始化OLE.

BOOL CXmlApp::InitInstance()

{

         AfxOleInit();

…….

}

 

, 在对话框中增加一个按钮,IDIDC_CREATE,我们在这个按钮的响应函数中生成一个xml文件.

void CXmlDlg::OnCreate()

{

         MSXML2::IXMLDOMDocumentPtr pDoc;

         MSXML2::IXMLDOMElementPtr  xmlRoot ;

         //创建DOMDocument对象

         HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));

         if(!SUCCEEDED(hr))

         {               

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

         }

        

         //根节点的名称为china

         pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot);

         pDoc->raw_appendChild(xmlRoot, NULL);

        

         MSXML2::IXMLDOMElementPtr  childNode ;        

         pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);

         childNode->Puttext("WuHan");//节点值

         childNode->setAttribute("population","8,000,000");//属性名,属性值

         childNode->setAttribute("area","10000");

         xmlRoot->appendChild(childNode);

        

         pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);

         childNode->Puttext("ShangHai");

         childNode->setAttribute("population","12,000,000");

         childNode->setAttribute("area","12000");

         xmlRoot->appendChild(childNode);

        

         //保存到文件

         //如果不存在就建立,存在就覆盖

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

}

不要忘了#import "msxml4.dll" //引入类型库

 

, 再增加一个按钮,IDIDC_GET,在这个按钮的响应函数中读取xml文件.

void CXmlDlg::OnGet()

{

         //创建DOMDocument对象

         MSXML2::IXMLDOMDocumentPtr pDoc;

         HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));

         if(!SUCCEEDED(hr))

         {               

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

         }

         //加载文件

         pDoc->load("f://he.xml");

        

         //在树中查找名为City的节点,"//"表示在任意一层查找

         MSXML2::IXMLDOMElementPtr  childNode ;

         childNode = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//City"));

        

         //得到节点类型

         MSXML2::DOMNodeType nodeType;

         childNode->get_nodeType(&nodeType);

        

         //节点名称

         BSTR var;

         CString name;

         childNode->get_nodeName(&var);

         name = (char*)(_bstr_t)var;

        

         //节点值

         VARIANT varVal;

         childNode->get_nodeTypedValue(&varVal);

         CString strValue = (char*)(_bstr_t)varVal;

        

         //节点属性,放在链表中

         MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;

         MSXML2::IXMLDOMNodePtr pAttrItem;

         childNode->get_attributes(&pAttrs);

         long nCount ;

         pAttrs->get_length(&nCount);

         for(int i = 0 ; i < nCount ; i++)

         {                

                   pAttrs->get_item(i,&pAttrItem);

                   //我们可以通过函数get_nodeName,get_nodeTypedValue得到属性名和属性值

                   //也可以直接得到

                   CString strAttrName   = (char*)(_bstr_t)pAttrItem->nodeName;

                   CString strAttrValue  = (char*)(_bstr_t)pAttrItem->nodeTypedValue;

         }

}

 

 

多年收集的VC++电子书,源代码现在免费全部奉献给大家

多年收集的VC++电子书,源代码现在免费全部奉献给大家 这里只列举了一点书籍和代码,我已经将电脑中全部资料上传到网址里面 !!!!!!!!!!!!全部免费!!!!!!!!!!!!!!!!!! 规...
  • e_wsq
  • e_wsq
  • 2013年05月06日 22:41
  • 2647

数字图像处理领域的二十四个典型算法及vc实现

 数字图像处理领域的二十四个典型算法及vc实现、第一章 - 结构之法 算法之道 - 博客频道 - CSDN.NET http://blog.csdn.net/v_july_v/article/...
  • lxw907304340
  • lxw907304340
  • 2015年06月04日 20:24
  • 1476

《Visual c++2013入门经典(第7版)》上机练习:为 Win32 控制台应用程序创建项目

看到《那些年我们追过的Wrox精品红皮计算机图书》有奖活动下载了《Visual c++2013入门经典(第7版)》的试读PDF,开始学习。这本书的读者对象本书针对任何想要学习如何使用 Visual C...
  • testcs_dn
  • testcs_dn
  • 2015年01月25日 14:50
  • 9688

VC入门宝典 by 何志丹

VC入门宝典 by 何志丹 分类: Programm Diary 2004-10-28 09:46 104576人阅读 评论(2) 收藏 举报 這陣子從頭開始學習:---...
  • junecau
  • junecau
  • 2011年09月17日 14:03
  • 1675

LInq入门宝典 Linq To Xml linq to sql

  • 2011年03月23日 13:17
  • 406KB
  • 下载

葵花宝典 十一 过滤器 监听器

请求 会话 上下文比较在 HttpServletRequest HttpSession ServletContext有三个相同的方法,都与属性有关set get remove Attribut...
  • qq_37248648
  • qq_37248648
  • 2017年07月05日 16:40
  • 108

篱笆家装宝典之十一——沙发

篱笆家装宝典之十一——沙发程序员XDJM们买套房子不容易,已经被开发商或二手房上家扒了层皮,不能再被装修商、建材商、家具商、软装商吸血了。我们要用知识武装自己,与JS血拼到底,就快来看冷山整理的篱笆家...
  • magus_yang
  • magus_yang
  • 2011年05月26日 23:36
  • 1330

吕鑫:VC++6.0就业培训宝典之MFC视频教程

视频下载地址: 作者简介 吕鑫,著名软件架构设计师和就业培训专家。从1996年开始使用MFC从事Windows软件开发,是极其罕见的第一代Windows程序员。自2001年起创立外资软件公司,3年内公...
  • qutadi
  • qutadi
  • 2014年07月25日 14:58
  • 1340

【风宇冲】Unity3D教程宝典之两步实现超实用的XML存档 内容加密 + 防拷贝

http://blog.sina.com.cn/s/blog_471132920101d3kh.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院      ...
  • chenluwolf
  • chenluwolf
  • 2014年03月10日 11:47
  • 1764

Unity3D教程宝典之两步实现超实用的XML存档

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                    两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝)...
  • u012520952
  • u012520952
  • 2015年11月16日 10:45
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC入门宝典十一(xml)
举报原因:
原因补充:

(最多只允许输入30个字)