VC++对XML文件操作

C++中使用CMarkup类处理XML文件详细教程 CMarkup类是一个用于解析和生成XML文档的C++库。它支持DOM和SAX两种处理模式,但与标准的DOM或SAX库相比,CMarkup提供了一些独特的特点,使得它在某些应用场景中更具有优势。以下是CMarkup的几个主要特点:轻量级:CMarkup库相对较小,不会对应用程序的总体大小产生太大影响。快速:该类库是为速度而设计,可以高效地处理大型XML文件。简单易用:CMarkup的API设计注重简洁,使得开发者可以快速上手并进行XML操作。内存效率。 阅读详情
 
void COperateXMLDlg::OnBnClickedGen()
{
	//::CoInitialize(NULL); //初始化COM
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	MSXML2::IXMLDOMDocumentPtr pDoc; 
	MSXML2::IXMLDOMElementPtr  xmlRoot ; 
	//创建DOMDocument对象
	HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); 
	if(!SUCCEEDED(hr)) 
	{  
	 MessageBox(_T("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!")); 
	 return ;
	} 
	//根节点的名称为Book
	//创建元素并添加到文档中
	xmlRoot=pDoc->createElement((_bstr_t)"Book");
	//设置属性
	xmlRoot->setAttribute("id",(const _variant_t)m_strId);
	pDoc->appendChild(xmlRoot);
	MSXML2::IXMLDOMElementPtr pNode;
	//添加“author”元素
	pNode=pDoc->createElement((_bstr_t)"Author");
	pNode->Puttext((_bstr_t)m_strAuthor);
	xmlRoot->appendChild(pNode);
	//添加“Title”元素
	pNode=pDoc->createElement((_bstr_t)"Title");
	pNode->Puttext((_bstr_t)m_strTitle);
	xmlRoot->appendChild(pNode);
	//保存到文件 
	//如果不存在就建立,存在就覆盖 
	pDoc->save(_T("d://he.xml")); 
	//::CoUninitialize();
}


void COperateXMLDlg::OnBnClickedGet()
{
	// TODO: 在此添加控件通知处理程序代码
	MSXML2::IXMLDOMDocumentPtr pDoc;
	HRESULT hr;
	hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
	if(FAILED(hr))
	{  
	 MessageBox(_T("无法创建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(count,& pAttrItem);
	//pAttrMap->get_item(0,& pAttrItem);  //同上,验证count值
	//取得节点的值
	pAttrItem->get_nodeTypedValue(&variantvalue);
	m_strId=(char *)(_bstr_t)variantvalue;
	/* 测试
	CString s;
	s.Format(_T("%d"),count);
	m_strAuthor=(char *)(_bstr_t)s;
	*/
	//方法二
	//MSXML2::IXMLDOMElementPtr pRootNode = pDoc->documentElement;
	//查找Book节点
	MSXML2::IXMLDOMNodePtr pBookNode = pDoc->selectSingleNode(_T("Book"));

	//CString s;
	//long size = pBookNode->length;
	MSXML2::IXMLDOMNodePtr pAuthorNode = pBookNode->selectSingleNode(_T("Author"));
	MSXML2::IXMLDOMNodePtr pTitleNode = pBookNode->selectSingleNode(_T("Title"));
	//s.Format(_T("%sauthor: %s\ttitle: %s\r\n"),s,(LPCTSTR)pAuthorNode->text,(LPCTSTR)pTitleNode->text);
	MSXML2::DOMNodeType nodeType; 
	//得到节点类型 
	pBookNode->get_nodeType(&nodeType);
	MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;
	MSXML2::IXMLDOMNodePtr   pAttrItem;
	pBookNode->get_attributes(&pAttrMap);  //获取节点所有属性
	long count;
	count=pAttrMap->get_length(&count);
	pAttrMap->get_item(count,& pAttrItem); //获得第count个item值

	_variant_t variantvalue;
	pAttrItem->get_nodeTypedValue(&variantvalue);
	//m_strId = (char *)(_bstr_t)variantvalue;
	//获取book的id属性的方法三
	//MSXML2::IXMLDOMElementPtr pRootNode = pDoc->documentElement;//此方法获得XML跟节点
	//variantvalue = pRootNode->getAttribute(_bstr_t("id"));
	MSXML2::IXMLDOMElementPtr pBNode = pBookNode;                //获取选中节点的元素节点地址
	variantvalue = pBNode->getAttribute(_bstr_t("id"));
	m_strId = (char *)(_bstr_t)variantvalue;
	m_strAuthor = (LPCTSTR)pAuthorNode->text;
	m_strTitle = (LPCTSTR)pTitleNode->text;
	
	UpdateData(FALSE);
}



void COperateXMLDlg::OnBnClickedClr()
{
	// TODO: 在此添加控件通知处理程序代码
	//UpdateData(TRUE);

	m_strId = (LPCTSTR)("");
	m_strAuthor = (LPCTSTR)("");
	m_strTitle = (LPCTSTR)("");

	UpdateData(FALSE);
}


以上三个按钮分别表示将数据写入XML文件,读取XML文件需要的节点属性值,以及清空文本框。

VC++通讯录开发详解——实现汉语拼音首字母查询及扩展功能 在本章节中,我们将开始探讨使用VC++开发一个基础通讯录应用的过程。这一过程涉及用户界面设计、数据结构选择、以及后续的程序测试和优化。首字母查询算法需要解决几个关键问题,包括如何快速地进行汉字到拼音的转换、如何处理多音字以及如何优化查询效率。以下是这些关键问题的解决方案概述:快速转换机制:为了提高转换效率,可以预先构建一个汉字到拼音的映射表,或者使用现成的库如libpinyin来提高处理速度。多音字处理。 阅读详情

相关推荐

VC++环境下XML操作的完整指南

可扩展标记语言(XML)作为一种数据交换格式,已被广泛应用于网络数据传输和存储。XML通过使用一系列规则和结构来描述数据,确保不同系统间的数据交换保持一致性和准确性。XML是一种标记语言,用于存储和传输数据,但与HTML不同,它不是为了显示数据,而是为了描述数据。它允许用户创建自己的标签,定义自己的数据类型,从而让数据的结构和内容具有自解释性。DOM(文档对象模型)是将文档以树形结构呈现的编程接口,它定义了文档的逻辑结构和如何通过编程语言去访问文档结构。

weixin_28746457的博客 827

vc++ xml操作大全

刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。

VC++解析XML完整文件,包括创建,读取,添加,删除

本例通过MFC建立对话,一步一步实现了VC++XML文件的解析,包括XML文件的创建,数据的添加,读取,删除等一系列完整操作,并附注释

C#和C++的速度大比拼(二)

数据库存取测试在这一部分,我们将用C++和C#代码来测试两者对数据库的存取和处理。方法是对同一个数据库表进行操作。表结构如下: CREATE TABLE testtable( col1 INTEGER, col2 VARCHAR(50), PRIMARY KEY (col1)) 测试将分三个部分,第一部分和第三部分集中对数据处理,第二部分集中对数据存取。数据

600000的专栏 2271

Win10系列:VC++ XML文件解析

XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据。在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4、libxml、IXMLDOM和TinyXML等,在使用C++/CX编写应用程序时可以通过C++提供的框架和类库来解析XML文件。TinyXML是一个轻量级解析XML的框架,本节将介绍如何使用此框架来...

weixin_34409703的博客 417

c++中实现对xml文件的读取与写入功能

c++中成功实现xml文件读取与写入功能

qq_53118460的博客 1594

vc++中使用xml

By Richard AndersonIntroductionThe Extensible Markup Language (XML) is one of those technologies that you just know you should start supporting in your applications sooner rather than later. Sin

carper的专栏 6311

vc++xml

#include "stdafx.h" #include #import named_guids using namespace std; using namespace MSXML; int _tmain(int argc, _TCHAR* argv[]) { ::OleInitialize(NULL); MSXML::IXMLDOMDocumentPtr pDoc; //xml文档

aizeng的专栏 1143

VC++通过MSXML6来操作xml需要注意的内存泄漏问题

VC++通过MSXML6来操作xml需要注意的内存泄漏问题1. 创建IXMLDOMDocument 对象,注:在使用完成后需要release,而不是立马release,立马释放了就没法使用了     HRESULT hr; IXMLDOMDocument *pXmlDoc = NULL;  hr = CoCreateInstance(__uuidof(DOMDocument),NULL,CLSCT...

aidansen的专栏 793

vc实现xml的操作

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

houjinfeng210的专栏 1178

vc中操作Xml--使用CMarkup类

DotNet中使用xml相对比较轻松,在vc中操作xml,有些繁琐。CMarkup比较好用//----------UserInfo.xml--------------xml version="1.0" encoding="UTF-8" ?> UserInfo>  UserID>luoUserID>   UserID>linUserID>   UserInfo> 

liugy1126的专栏 2168

如何用vc创建和读取xml文件??

如何用vc创建和读取xml文件?? 楼主 cwcsdn(nic) 2005-04-28 00:23:32 在 VC/MFC / 基础类 提问 能给一个简单的例子吗?? 问题点数:60、回复次数:7 Top 1 楼 edaynet(忆天) 回复于 2005-04-28 05:19:36 得分 60 void CXmlDlg::OnCre...

weixin_30667301的博客 64

VC++实现对xml文件的操作

VC++平台下,实现对XML文件的操作,只要简单引用文件即可使用。

VC++实现xml文件操作

VC++实现xml文件操作,自己在网上找的一些资料。

VC++创建与读取XML文件

VC创建与读取XML文件demo Win7+VS2010实现,简单易懂,读取内容在程序启动后的“输出”面板显示

vc CMarkup类中操作xml

vc中操作xml,有些繁琐。最近在网络上得知CMarkup比较好用,于是试了下,还好,就把部分例子写出来。以后有时间的话,再写清楚点。将Markup.h .cpp拷贝并添加到工程中,第一次编译可能会出现预编译错误,解决的方法在Markup.cpp最前面#include "stdafx.h",或者关闭预编译。   //----------UserInfo.xml-----------

wanglei2258的专栏 879

tinyxml实例

刚接触xml,现在要在vc里写xml文档,开始入不了门,这个小程序是入门的可以写成xml文档,在运行之前现将tinystr.cpp   tinyxml.cpp  tinyxmlerror.cpp  tinyxmlparser.cpp和tinystr.h   tinyxml.h这几个添加到你的工程中,记得在4个cpp文件前面都加上#include "stdafx.h"这个头文件,这样一个简单的xml

qinzhaohong001的专栏 633
上一篇: VC++中XML文件的解析读取写入
下一篇: VC操作XML的基本流程
Michael@Wu
博客等级 码龄15年 3粉丝 20原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值