惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
IT之家
IT之家
罗磊的独立博客
博客园_首页
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
Hugging Face - Blog
Hugging Face - Blog
G
Google Developers Blog
博客园 - 叶小钗
H
Help Net Security
N
Netflix TechBlog - Medium
B
Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)

博客园 - 施昌权-博客

WebBrowser控件说明 实验1 Windows汇编语言开发环境 使用Visual C++调试器调试 在VC程序中使用调试语句 编写易于调试的vc代码 轻松实现一个操作ini文件的类 如何使用 MFC 嵌入并自动化 Microsoft Excel 工作表 开发可以自动运行程序的U盘 vc++操作word linux socket 编程 在vc中使用MSXML解析xml文件 利用MSXML解析XML文本(VC) VC中BSTR、Char和CString类型的转换 XML文档对象模型 利用VC++与MSXML解析XML文档 XML编程实例 简单的VC 操作XML 文件的的方法 VC读写XML文件 VC读写XML文件
VC_XML
施昌权-博客 · 2008-02-21 · via 博客园 - 施昌权-博客

,建立一个基于对话框的程序,工程名为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;

         }

}

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

posted on 2008-02-21 18:09  施昌权-博客  阅读(700)  评论()    收藏  举报