VC中使用XML

转载 2015年11月18日 22:27:31
SDK
SDK中也可以使用智能指针,和MFC没太大区别,同样很方便,直接给代码:

#include <iostream>
#include <tchar.h>

#import <msxml3.dll>

//节点处理函数
void ProcessNode(MSXML2::IXMLDOMNodePtr spNode)
{
std::cout << "nodeName: " << spNode->nodeName;
if (spNode->nodeType == NODE_ATTRIBUTE || spNode->nodeType == NODE_TEXT)
std::cout << "\tnodeValue: " << _bstr_t(spNode->nodeValue);
std::cout << std::endl;

if (spNode->nodeType == NODE_ELEMENT)
{
MSXML2::IXMLDOMNamedNodeMapPtr spNameNodeMap = spNode->attributes;
for (long i = 0; i != spNameNodeMap->length; ++i) //遍历节点属性
ProcessNode(spNameNodeMap->item[i]);

MSXML2::IXMLDOMNodeListPtr spNodeList = spNode->childNodes;
for (long i = 0; i != spNodeList->length; ++i) //遍历子节点
ProcessNode(spNodeList->item[i]);
}
}

int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
//读取XML
MSXML2::IXMLDOMDocumentPtr spXMLDoc;
spXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
spXMLDoc->load(L"stocks.xml");
MSXML2::IXMLDOMElementPtr spRoot = spXMLDoc->documentElement; //根节点
MSXML2::IXMLDOMNodeListPtr spNodeList = spRoot->childNodes;
for (long i = 0; i != spNodeList->length; ++i) //遍历子节点
ProcessNode(spNodeList->item[i]);

//写入XML
spRoot->selectSingleNode(L"/root/node1")->text = L"newText";
spRoot->selectSingleNode(L"/root/node2/childnode1/@attrib1")->nodeValue = L"newValue";
MSXML2::IXMLDOMNodePtr spNewNode = spRoot->selectSingleNode(L"/root/node2")->appendChild(
spXMLDoc->createNode(_variant_t(NODE_ELEMENT), L"childnode3", L"")
); //给node2创建新子节点childnode3
spNewNode->text = L"childtext2";
MSXML2::IXMLDOMElementPtr spEle = spNewNode;
spEle->setAttribute(L"attrib1", _variant_t(L"value1")); //添加新属性
spXMLDoc->save(_variant_t(L"stocks.xml"));

spNewNode.Release();
spEle.Release();
spNodeList.Release();
spRoot.Release();
spXMLDoc.Release();
CoUninitialize();

system("pause");
return 0;
}

VC 使用msxml6.dll动态链接库中的函数读写XML文件

VC 使用msxml6.dll动态链接库中的函数读写XML文件
  • qq2399431200
  • qq2399431200
  • 2013年12月26日 15:10
  • 4862

VC轻松解析XML文件 - CMarkup类的使用方法

VC轻松解析XML文件 - CMarkup类的使用方法 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等。 据说tinyXML很好,可能字符集问题,我编译...
  • erick08
  • erick08
  • 2013年02月24日 10:11
  • 3515

VC++ 使用soapsdk和gsoap两种方法调用webservice

VC++调用webservice 第一种方法,使用微软的soapsdk: 第二种方法,使用gsoap:
  • lizpengcn
  • lizpengcn
  • 2016年03月08日 08:53
  • 1515

Mini-XML库(包含编译工程和文档)及其在VC++6.0下的使用示例

  • 2015年06月06日 16:06
  • 7.03MB
  • 下载

VC.net 使用XML文件读写图像

  • 2010年08月18日 15:21
  • 13KB
  • 下载

VC使用tinyxml读写INI,cfg,XML配置文件

#define UPDATE_CONFIG "update.cfg" //客户端版本信息文件 //解析Update.cfg文件TiXmlDocument UpdateCfgDoc(UPDATE_CON...
  • goodai007
  • goodai007
  • 2012年04月24日 10:57
  • 2848

vc中操作Xml--使用CMarkup类

vc中操作Xml--使用CMarkup类 http://www.firstobject.com/dn_markup.htm DotNet中使用xml相对比较轻松,在vc中操作xml,有些繁...
  • m372897500
  • m372897500
  • 2011年10月08日 19:15
  • 242

VC轻松解析XML文件 - CMarkup类的使用方法

VC轻松解析XML文件 - CMarkup类的使用方法 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等。 据说tinyXML很好,可能字符集问题,我编译...
  • wuan584974722
  • wuan584974722
  • 2016年11月17日 08:13
  • 173

VC使用tinyxml 遍历xml文件

#include "tinystr.h" #include "tinyxml.h" #ifdef _DEBUG #pragma comment(lib,"tinyxmld.lib")...
  • EckelWei
  • EckelWei
  • 2013年03月08日 09:39
  • 4616

VC 使用msxml6.dll动态链接库中的函数读写XML文件

VC 使用msxml6.dll动态链接库中的函数读写XML文件
  • qq2399431200
  • qq2399431200
  • 2013年12月26日 15:10
  • 4862
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC中使用XML
举报原因:
原因补充:

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