C++访问XML

简介: C++访问XML

生成树根

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;  
} 
相关文章
|
3月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
276 4
|
5月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
156 0
|
6月前
|
XML 存储 JavaScript
XML DOM - 访问节点
XML DOM 允许你访问XML文档中的每一个节点。你可以通过三种方式进行节点访问:使用 `getElementsByTagName()` 方法、循环遍历节点树或通过节点间的关系进行导航。`getElementsByTagName()` 返回一个节点列表,即节点的数组形式。示例代码展示了如何将 &quot;books.xml&quot; 文件加载到 `xmlDoc` 中,并随后在变量 `x` 中存储这些信息。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: 1. 使用 `getElementsByTagName()` 方法, 2. 遍历节点树, 3. 利用节点间的关联进行导航。 `getElementsByTagName()` 返回一个 Node List, 即节点数组。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: 1. 使用 `getElementsByTagName()` 方法, 2. 遍历节点树, 3. 利用节点间的关联进行导航。 `getElementsByTagName()` 返回一个 Node List, 即节点数组。示例代码加载 &quot;books.xml&quot; 到 xmlDoc 并存储...
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于获取 XML 文档中指定标签名的所有节点,返回一个节点列表,类似数组。可以循环遍历节点树或利用节点关系导航来访问每个节点。例如,加载 &quot;books.xml&quot; 到 xmlDoc 后,变量 x 存储了所有 `&lt;book&gt;` 节点的列表。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM, 可全面访问 XML 文档的节点。实现这一目标有 3 种方法: - 使用 `getElementsByTagName()` 方法, - 循环遍历节点树, - 利用节点间关系进行导航。 `getElementsByTagName()` 返回一个 Node List,即一种节点数组形式。示例代码通过 `loadXMLDoc()` 函数加载 &quot;books.xml&quot; 文件到 `xmlDoc` 变量中,并随后在变量 `x` 中保存所需节点信息。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
DOM 允许访问 XML 文档的每个节点, 主要通过三种方式: 1. 使用 `getElementsByTagName()` 方法; 2. 循环遍历节点树; 3. 利用节点间关系导航。 此方法返回一个节点列表(Node List),实质为节点数组。示例代码加载 &quot;books.xml&quot; 到 `xmlDoc`,并存储结果到变量 `x`。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于访问XML文档中的特定节点。节点可按三种方式获取:使用该方法、遍历节点树或导航节点关系。`getElementsByTagName()` 返回一个节点列表,类似数组,可用于处理多个匹配节点。例如,代码加载 &quot;books.xml&quot; 到 `xmlDoc`,再将结果保存到变量 `x`。
|
7月前
|
XML 存储 JavaScript
XML DOM - 访问节点
通过 DOM,您能够访问 XML 文档中的每个节点。