C++访问XML

举报
清雨小竹 发表于 2022/09/25 00:46:30 2022/09/25
【摘要】 生成树根MSXML::IXMLDOMElementPtr pDocElement=pDoc->createElement("China"); pDoc->appendChild(pDocElement);   ///添加节点MSXML::IXMLDOMElementPtr pNewChild...

生成树根

MSXML::IXMLDOMElementPtr pDocElement=pDoc->createElement("China"); 

pDoc->appendChild(pDocElement); 

 

///添加节点

MSXML::IXMLDOMElementPtr pNewChildElement; 

 pNewChildElement=pDoc->createElement("Beijing"); 

 pNewChildElement->Puttext("-11"); 

 pDocElement->appendChild(pNewChildElement); 

 

 //显示树

count<<pDoc->xml<<endl;

 

//再添加节点

pNewChildElement=pDoc->createElement("Shanghai"); 

 pNewChildElement->Puttext("9"); 

 pNewChildElement->setAttribute("Weather",_variant_t("Cloudy")); 

 pDocElement->appendChild(pNewChildElement); 

 

//把刚加入的节点删除

pDocElement->removeChild (pNewChildElement); 

 

//保存文件

pDoc->save("test.XML");

 

//打开XML文件

MSXML::IXMLDOMDocumentPtr pDoc; 

 HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); 

 if(!SUCCEEDED(hr)) 

 { 

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

  Exit(); 

 } 

 pDoc->load("test.XML"); 

 

///定位并删除节点

MSXML::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement(); 

 MSXML::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode("Shanghai"); 

 pDocElement->removeChild(pElement); 

 

//读取节点内容

 MSXML::IXMLDOMNodePtr   pRootNode=pDoc-> selectSingleNode( "China/Beijing ");

 _bstr_t   strRequestType=pRootNode-> Gettext();

 cout<<"读取China/Beijing"<<strRequestType.operator   char   *()<<endl;

 

 ****************************************************************************

// testXML.cpp : 定义控制台应用程序的入口点。


#include "iostream"

#include "msxml.h" 

#include "atlbase.h" 

#import "msxml.dll" //引入类型库 

using namespace std;

#ifdef _DEBUG 

#define new DEBUG_NEW 

#undef THIS_FILE 

static char THIS_FILE[] = __FILE__; 

#endif 

int Exit(); 

void LoadFromString(); 

void CreateXML(); 

//XML文本模板 

_bstr_t XMLTemple=" -11 9 "; 

int main() 

 cout << " XML编程--示范程序 " << endl; 

 CoInitialize(NULL); //初始化COM 环境 

 cout << "------生成新的XML文本 ------" << endl; 

 CreateXML(); 

 cout << "------读取已有XML文本 ------" << endl; 

 LoadFromString(); 

 return Exit(); 

void CreateXML() 

 MSXML::IXMLDOMDocumentPtr pDoc; 

 HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); 

 if(!SUCCEEDED(hr)) 

 { 

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

  Exit(); 

 } 

 MSXML::IXMLDOMElementPtr pDocElement=pDoc->createElement("China"); 

 pDoc->appendChild(pDocElement); 

 cout << "生成树根:\n" << pDoc->xml << endl; 

 MSXML::IXMLDOMElementPtr pNewChildElement; 

 pNewChildElement=pDoc->createElement("Beijing"); 

 pNewChildElement->Puttext("-11"); 

 pDocElement->appendChild(pNewChildElement); 

 cout << "添加节点:\n" << pDoc->xml << endl; 

 pNewChildElement=pDoc->createElement("Shanghai"); 

 pNewChildElement->Puttext("9"); 

 pNewChildElement->setAttribute("Weather",_variant_t("Cloudy")); 

 pDocElement->appendChild(pNewChildElement); 

  cout << "再添加节点:\n" << pDoc->xml << endl; 

 pDocElement->removeChild (pNewChildElement); 

 cout << "把刚加入的节点删除:\n" << pDoc->xml << endl; 

 pDoc->save("test.XML");

void LoadFromString() 

 MSXML::IXMLDOMDocumentPtr pDoc; 

 HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); 

 if(!SUCCEEDED(hr)) 

 { 

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

  Exit(); 

 } 

 pDoc->load("test.XML"); 

 cout << "读取结果:\n" << pDoc->xml << endl; 

 

MSXML::IXMLDOMNodePtr pRootNode=pDoc-> selectSingleNode( "China/Beijing ");

_bstr_t strRequestType=pRootNode-> Gettext();

cout<<"读取China/Beijing"<<strRequestType.operator char *()<<endl;

 

 MSXML::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement(); 

MSXML::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode("Beijing"); 

pDocElement->removeChild(pElement); 

 cout << "定位删除Shanghai节点:\n" << pDoc->xml << endl; 

 cout << "保存结果 Save .....(模拟而已)" << endl; 

 cout << "\n 好了,就这么简单" << endl; 

int Exit() 

 getchar(); 

 return 1; 

}




文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/8265432

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。