C++ 操作XML的完整例子——MSXML篇
写本文的目的是为了方便大家了解C++ MSXML操作方法。
当然,C++中对MSXML的调用有多种,本文采用的方法是完全参照MSXML SDK提供的文档进行操作。
如果有什么错误,欢迎指正。
代码框架是基于vs2008 MFC 对话框程序(UNICODE)。对话框程序需要读者自己创建。
#include <msxml6.h>
#include <comutil.h>
#pragma comment(lib, "comsuppwd.lib")
void CXmlSampleDlg::OnBnClickedButton1()//按钮事件
{
CoInitialize(NULL);
CComPtr<IXMLDOMDocument> spXmldoc;
HRESULT hr = spXmldoc.CoCreateInstance(L"MSXML2.DOMDocument.6.0");
if(SUCCEEDED(hr))
{
VARIANT_BOOL isSuccessFul;
CComVariant varXmlFile(L"a.xml");
spXmldoc->put_async(VARIANT_FALSE);
HRESULT hr= spXmldoc->load(varXmlFile, &isSuccessFul);
if(isSuccessFul==VARIANT_TRUE)
{
CComBSTR bstrXml;
CComPtr<IXMLDOMElement> spRoot=NULL;
CComPtr<IXMLDOMElement> spTheBook=NULL;
CComPtr<IXMLDOMElement> spTheElem=NULL;
CComPtr<IXMLDOMNode> spNewNode=NULL;
hr = spXmldoc->get_documentElement(&spRoot);
spRoot->get_xml(&bstrXml);
AfxMessageBox(L"1, 原始的XML");
AfxMessageBox(bstrXml);
spXmldoc->createElement(L"book", &spTheBook);
spXmldoc->createElement(L"name", &spTheElem);
spXmldoc->put_text(L"新书");
spTheBook->appendChild(spTheElem, &spNewNode);
spTheElem.Release();
spNewNode.Release();
spXmldoc->createElement(L"price", &spTheElem);
spTheElem->put_text(L"20");
spTheBook->appendChild(spTheElem, &spNewNode);
spTheElem.Release();
spNewNode.Release();
spXmldoc->createElement(L"memo", &spTheElem);
spTheElem->put_text(L"新书的更好看。");
spTheBook->appendChild(spTheElem, &spNewNode);
spNewNode.Release();
spTheElem.Release();
spRoot->appendChild(spTheBook, &spNewNode);
spNewNode.Release();
spTheBook.Release();
spRoot->get_xml(&bstrXml);
AfxMessageBox(L"2, 新建一本书完成");
AfxM
相关文档:
标签:
it
分类:C/C++
我的回忆和有趣的故事 --- C/C++圣战篇
李维
------------------------------------------------------------------------------------------
声明
以下的这篇文章内容是我个人的回忆以及看法,没有任何特别的偏见,许多的事情是根据我的记忆以及从许多人的诉说中得知的,也许内容不是百分 ......
ODBC和IDAPI之争
当Microsoft在逐渐的击败他的竞争对手,并且拥有了大部份PC数据库市场之后,便慢慢的了解到掌握标准的重要性。此外Microsoft为了统一各应用程序之间不同资料的存取,因此开始制定存取资料的统一标准-ODBC。Microsoft更大的目的是为了准备和瞄准下一场的大战,那就是PC上的RDBMS产品。当然Microsoft 要一统 ......
在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少量区别.下面简要介绍一下最重要的区别.
在C++中,民,局部变量可以在一个程序块内在任何地方声明,在C中,局部变量必须在程序块的开始部分,即在所有"操作"语句之前声明,请注意,C99标准中取消了这种限制.
&nb ......
C/C++ 常见误区
1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法 ......
修改makefile,在LIBS里面加上-lmemcached,比如原来 gcc test.c,现在 gcc test.c -lmemcached。这个库就是libmemcached提供的。
然后添加#include<libmemcached/memcached.h>,这个文件也是libmemcached提供的。
主函数里面需要添加:
memcached_st *memc;
uint32_t&nbs ......