main.h
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
#include <iostream>
#include <atlbase.h>
#include <atlcom.h>
#include <atlcomcli.h>
#import "msxml4.dll"
using namespace std;
using namespace MSXML2;
//MSDN
//ms-help://MS.MSDNQTR.v90.chs/wmsrvsdk/htm/xmldominterfaces.htm
//创建文件
void test1(void); //1.xml
void test2(void); //2.xml
void test3(void); //3.xml
void test4(void); //4.xml
void test5(void); //5.xml
//读文件
void test6(void); //1.xml
void test7(void); //2.xml
void test8(void); //3.xml
void test9(void); //4.xml
void test10(void); //5.xml
void test12(void); //6.xml 获取注释
void test100(void); //测试用
main.cpp
#include "main.h"
int main (void)
{
test10();
getchar();
return 0;
}
void test1( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("1.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='gb2312'")));
pDoc->appendChild(pProInstruction);
//root
MSXML2::IXMLDOMElementPtr pRoot;
pRoot = pDoc->createElement(TEXT("root"));
pDoc->appendChild(pRoot);
//centos
MSXML2::IXMLDOMNodePtr pNode = NULL;
pNode = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("centos"),TEXT("1"));
pNode->Puttext(TEXT("my name is centos mini 6.5"));
pRoot->appendChild(pNode);
//linux
MSXML2::IXMLDOMNodePtr linux = NULL;
linux = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("linux"),TEXT("2"));
linux->Puttext(TEXT("my name is Readhat"));
pRoot->appendChild(linux);
//windows
MSXML2::IXMLDOMNodePtr windows = NULL;
windows = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("windows"),TEXT("3"));
windows->Puttext(TEXT("my name is windows 7"));
pRoot->appendChild(windows);
pDoc->save(szXmlName);
/*
//输出结果
<?xml version="1.0" encoding="GB2312"?>
<root>
<centos xmlns="1">my name is centos mini 6.5</centos>
<linux xmlns="2">my name is Readhat</linux>
<windows xmlns="3">my name is windows 7</windows>
</root>
*/
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
//CoUninitialize();
}
void test2( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("2.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='utf-8'")));
pDoc->appendChild(pProInstruction);
//root
MSXML2::IXMLDOMElementPtr pRoot;
pRoot = pDoc->createElement(TEXT("root"));
pDoc->appendChild(pRoot);
//注释
MSXML2::IXMLDOMCommentPtr pComment = NULL;
pComment=pDoc->createComment(TEXT("Settings for MyApp"));
pDoc->appendChild(pComment);
//Messages
MSXML2::IXMLDOMElementPtr pElementMessages = NULL;
pElementMessages=pDoc->createElement("Messages");
pRoot->appendChild(pElementMessages);
//Welcome
MSXML2::IXMLDOMNodePtr pNodeWelcome = NULL;
pNodeWelcome=pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("Welcome"),TEXT(""));
pNodeWelcome->put_text(TEXT("Welcome to MyApp"));
pElementMessages->appendChild(pNodeWelcome);
//Farewell
MSXML2::IXMLDOMNodePtr pNodeFarewell=NULL;
pNodeFarewell=pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("Farewell"),TEXT(""));
pNodeFarewell->put_text(TEXT("Thank you for using MyApp"));
pElementMessages->appendChild(pNodeFarewell);
//Windows
MSXML2::IXMLDOMElementPtr pElementWindows = NULL;
pElementWindows=pDoc->createElement("Windows");
pRoot->appendChild(pElementWindows);
//注释
MSXML2::IXMLDOMCommentPtr pCommentwindow = NULL;
pCommentwindow=pDoc->createComment(TEXT(" window name='MainFrame' x='5' y='5' w='400' h='250' "));
pElementWindows->appendChild(pCommentwindow);
//hello
MSXML2::IXMLDOMNodePtr pNodehello = NULL;
pNodehello=pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("hello"),TEXT(""));
pNodehello->put_text(TEXT("Welcome to MyApp"));
pElementWindows->appendChild(pNodehello);
//visualc
MSXML2::IXMLDOMNodePtr pNodevisualc = NULL;
pNodevisualc=pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("visualc"),TEXT(""));
pNodevisualc->put_text(TEXT("centos"));
pElementWindows->appendChild(pNodevisualc);
pDoc->save(szXmlName);
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test3( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("3.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='gb2312'")));
pDoc->appendChild(pProInstruction);
//Demo
MSXML2::IXMLDOMElementPtr pDemo;
pDemo = pDoc->createElement(TEXT("Demo"));
pDemo->setAttribute("name","Circle");
pDemo->setAttribute("x","5");
pDemo->setAttribute("y","5");
pDemo->setAttribute("radius","3.141590");
pDoc->appendChild(pDemo);
pDoc->save(szXmlName);
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test4( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("4.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='gb2312'")));
pDoc->appendChild(pProInstruction);
//root
MSXML2::IXMLDOMElementPtr pRoot;
pRoot = pDoc->createElement(TEXT("root"));
pDoc->appendChild(pRoot);
//windows
MSXML2::IXMLDOMElementPtr pwindows;
pwindows = pDoc->createElement(TEXT("windows"));
pRoot->appendChild(pwindows);
//window
MSXML2::IXMLDOMElementPtr pwindow;
pwindow = pDoc->createElement(TEXT("window"));
pwindow->setAttribute("name","MainFrame");
pwindow->setAttribute("x","5");
pwindow->setAttribute("y","5");
pwindow->setAttribute("w","400");
pwindow->setAttribute("h","250");
pwindows->appendChild(pwindow);
//server
MSXML2::IXMLDOMElementPtr pServer;
pServer=pDoc->createElement(TEXT("server"));
pServer->setAttribute(TEXT("name"),TEXT("2003"));
pServer->setAttribute(TEXT("x"),TEXT("1"));
pServer->setAttribute(TEXT("y"),TEXT("2"));
pServer->setAttribute(TEXT("w"),TEXT("3"));
pServer->setAttribute(TEXT("h"),TEXT("4"));
pwindows->appendChild(pServer);
//linux
MSXML2::IXMLDOMElementPtr plinux;
plinux = pDoc->createElement(TEXT("linux"));
pRoot->appendChild(plinux);
//centos
MSXML2::IXMLDOMNodePtr pCentos = NULL;
pCentos = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("centos"),TEXT(""));
pCentos->Puttext(TEXT("my name is centos mini 6.5"));
plinux->appendChild(pCentos);
//readhat
MSXML2::IXMLDOMNodePtr preadhat = NULL;
preadhat = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("readhat"),TEXT(""));
preadhat->Puttext(TEXT("my name is readhat"));
plinux->appendChild(preadhat);
//windowsxp
MSXML2::IXMLDOMNodePtr pwindowsxp = NULL;
pwindowsxp = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("windowsxp"),TEXT(""));
pwindowsxp->Puttext(TEXT("my name is windows xp"));
plinux->appendChild(pwindowsxp);
//windows7
MSXML2::IXMLDOMNodePtr pwindows7 = NULL;
pwindows7 = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("windows7"),TEXT(""));
pwindows7->Puttext(TEXT("my name is windows 7"));
plinux->appendChild(pwindows7);
//windows8
MSXML2::IXMLDOMNodePtr pwindows8 = NULL;
pwindows8 = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("windows8"),TEXT(""));
pwindows8->Puttext(TEXT("my name is windows 8"));
plinux->appendChild(pwindows8);
//ddosip
MSXML2::IXMLDOMElementPtr pddosip;
pddosip=pDoc->createElement(TEXT("ddosip"));
pddosip->setAttribute(TEXT("ip"),TEXT("192.168.1.1"));
pddosip->setAttribute(TEXT("time"),TEXT("12345678"));
pRoot->appendChild(pddosip);
//Connetion
MSXML2::IXMLDOMElementPtr pConnetion;
pConnetion=pDoc->createElement(TEXT("Connetion"));
pConnetion->setAttribute(TEXT("ip"),TEXT("192.168.0.1"));
pConnetion->setAttribute(TEXT("timeout"),TEXT("123.456000"));
pRoot->appendChild(pConnetion);
pDoc->save(szXmlName);
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test5( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("5.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='gb2312'")));
pDoc->appendChild(pProInstruction);
//class
MSXML2::IXMLDOMElementPtr pClass;
pClass = pDoc->createElement(TEXT("Class"));
pClass->setAttribute(TEXT("name"),TEXT("计算机软件班"));
pDoc->appendChild(pClass);
//Students
MSXML2::IXMLDOMElementPtr pStudents;
pStudents = pDoc->createElement(TEXT("Students"));
pClass->appendChild(pStudents);
//Student
MSXML2::IXMLDOMElementPtr pStudent;
pStudent = pDoc->createElement(TEXT("Student"));
pStudent->setAttribute(TEXT("name"),TEXT("张三"));
pStudent->setAttribute(TEXT("age"),TEXT("22"));
pStudent->setAttribute(TEXT("sex"),TEXT("男"));
pStudent->setAttribute(TEXT("studentNo"),TEXT("13031001"));
pStudents->appendChild(pStudent);
//hone
MSXML2::IXMLDOMNodePtr pPhone;
pPhone = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("Phone"),TEXT(""));
pPhone->Puttext(TEXT("88208888"));
pStudent->appendChild(pPhone);
//address
MSXML2::IXMLDOMNodePtr paddress;
paddress = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("address"),TEXT(""));
paddress->Puttext(TEXT("西安市太白南路二号"));
pStudent->appendChild(paddress);
//Student
MSXML2::IXMLDOMElementPtr pStudent1;
pStudent1 = pDoc->createElement(TEXT("Student"));
pStudent1->setAttribute(TEXT("name"),TEXT("李四"));
pStudent1->setAttribute(TEXT("age"),TEXT("22"));
pStudent1->setAttribute(TEXT("sex"),TEXT("男"));
pStudent1->setAttribute(TEXT("studentNo"),TEXT("13031002"));
pStudents->appendChild(pStudent1);
//hone
MSXML2::IXMLDOMNodePtr pPhone1;
pPhone1 = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("Phone"),TEXT(""));
pPhone1->Puttext(TEXT("8820666"));
pStudent1->appendChild(pPhone1);
//address
MSXML2::IXMLDOMNodePtr paddress1;
paddress1 = pDoc->createNode(MSXML2::NODE_ELEMENT,TEXT("address"),TEXT(""));
paddress1->Puttext(TEXT("西安市光华路"));
pStudent1->appendChild(paddress1);
pDoc->save(szXmlName);
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test6( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("1.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMNodeListPtr pNodeList = NULL; // 节点链表
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL; // 节点
MSXML2::IXMLDOMNamedNodeMapPtr pAttrList = NULL; // 属性链表
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
long lChilds, lAttr, i;
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
VARIANT_BOOL bXmlLoad = pDoc->load(szXmlName);
if (!bXmlLoad)
{
printf("加载%s失败\n",szXmlName);
return ;
}
//根节点
pRootElement = pDoc->GetdocumentElement();
printf("%s\n", (char*)pRootElement->GetnodeName());
//根节点的一级子节点
pNodeList = pRootElement->GetchildNodes(); //pRootElement->childNodes
lChilds = pNodeList->Getlength(); //pNodeList->length
for (i = 0; i < lChilds; i++)
{
pNode = pNodeList->Getitem(i); // pNodeList->item[i]
if (pNode->GetnodeType() != MSXML2::NODE_COMMENT) // 过滤注释节点
{
printf(" %s %s\n",(char*)pNode->GetnodeName(),(char*)pNode->Gettext());
}
}
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test7( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("2.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMNodeListPtr pNodeList = NULL; // 节点链表
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL; // 节点
MSXML2::IXMLDOMNamedNodeMapPtr pAttrList = NULL; // 属性链表
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
long lChilds, lAttr, i;
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
VARIANT_BOOL bXmlLoad = pDoc->load(szXmlName);
if (!bXmlLoad)
{
printf("加载%s失败\n",szXmlName);
return ;
}
//根节点
pRootElement = pDoc->GetdocumentElement();
printf("%s\n", (char*)pRootElement->GetnodeName());
//根节点的一级子节点
pNodeList = pRootElement->GetchildNodes();
lChilds = pNodeList->Getlength();
for (i = 0; i < lChilds; i++)
{
pNode = pNodeList->Getitem(i);
if (pNode->GetnodeType() != MSXML2::NODE_COMMENT) // 过滤注释节点
{
printf("%s\n",(char*)pNode->GetnodeName());
}
}
//查找节点<Messages>下的所有子节点
// "//"表示在任意一层寻找Messages;"//*"查找<Messages></Messages>中的所有子节点
pNodeList = pDoc->selectNodes((_bstr_t)(char*)"//Messages//*");
while (pNode = pNodeList->nextNode())
{
printf("%s %s\n", (char*)pNode->GetnodeName(),(char*)pNode->Gettext());
}
//查找节点<Windows>下的所有子节点
pNodeList = pDoc->selectNodes((_bstr_t)(char*)"//Windows//*");
while (pNode = pNodeList->nextNode())
{
printf("%s %s\n", (char*)pNode->GetnodeName(),(char*)pNode->Gettext());
}
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test8( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("3.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMNodeListPtr pNodeList = NULL; // 节点链表
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL; // 节点
MSXML2::IXMLDOMNamedNodeMapPtr pAttrList = NULL; // 属性链表
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
long lChilds, lAttr, i;
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
VARIANT_BOOL bXmlLoad = pDoc->load(szXmlName);
if (!bXmlLoad)
{
printf("加载%s失败\n",szXmlName);
return ;
}
//根节点
pRootElement = pDoc->GetdocumentElement();
printf("%s\n", (char*)pRootElement->GetnodeName());
pAttrList = pRootElement->Getattributes();
lAttr = pAttrList->Getlength();
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test9( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("4.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMNodeListPtr pNodeList = NULL; // 节点链表
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL; // 节点
MSXML2::IXMLDOMNamedNodeMapPtr pAttrList = NULL; // 属性链表
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
long lChilds, lAttr, i;
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
VARIANT_BOOL bXmlLoad = pDoc->load(szXmlName);
if (!bXmlLoad)
{
printf("加载%s失败\n",szXmlName);
return ;
}
//根节点
pRootElement = pDoc->GetdocumentElement();
printf("%s\n", (char*)pRootElement->GetnodeName());
//根节点的一级子节点
pNodeList = pRootElement->GetchildNodes();
lChilds = pNodeList->Getlength();
for (i = 0; i < lChilds; i++)
{
pNode = pNodeList->Getitem(i);
if (pNode->GetnodeType() != MSXML2::NODE_COMMENT) // 过滤注释节点
{
printf(" %s\n",(char*)pNode->GetnodeName());
}
}
//查找节点<Windows>下的所有子节点
pNodeList = pDoc->selectNodes((_bstr_t)(char*)"//windows//*");
while (pNode = pNodeList->nextNode())
{
printf("%s\n", (char*)pNode->GetnodeName());
pAttrList = pNode->Getattributes();
lAttr = pAttrList->Getlength();
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
}
//查找节点<linux>下的所有子节点
pNodeList = pDoc->selectNodes((_bstr_t)(char*)"//linux//*");
while (pNode = pNodeList->nextNode())
{
printf("%s %s\n", (char*)pNode->GetnodeName(),(char*)pNode->Gettext());
}
//ddosip
pNodeList=pRootElement->GetchildNodes();
pNode=pNodeList->Getitem(2);
printf("%s\n", (char*)pNode->GetnodeName());
pAttrList = pNode->Getattributes();
lAttr = pAttrList->Getlength();
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
pNode=pNodeList->Getitem(3);
printf("%s\n", (char*)pNode->GetnodeName());
pAttrList = pNode->Getattributes();
lAttr = pAttrList->Getlength();
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test10( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("5.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMNodeListPtr pNodeList = NULL; // 节点链表
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL; // 节点
MSXML2::IXMLDOMNamedNodeMapPtr pAttrList = NULL; // 属性链表
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
long lChilds, lAttr, i;
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
VARIANT_BOOL bXmlLoad = pDoc->load(szXmlName);
if (!bXmlLoad)
{
printf("加载%s失败\n",szXmlName);
return ;
}
//根节点
pRootElement = pDoc->GetdocumentElement();
printf("%s\n", (char*)pRootElement->GetnodeName());
pAttrList=pRootElement->Getattributes();
lAttr = pAttrList->Getlength();
pAttrList->Getitem(lAttr);
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
//查找节点<Students>下的所有子节点
pNodeList = pDoc->selectNodes((_bstr_t)(char*)"//Students//*");
while (pNode = pNodeList->nextNode())
{
printf("%s %s\n", (char*)pNode->GetnodeName(),(char*)pNode->Gettext());
pAttrList = pNode->Getattributes();
lAttr = pAttrList->Getlength();
for (i = 0; i < lAttr; i++)
{
pAttrNode = pAttrList->Getitem(i);
printf("%s %s\n",(char*)pAttrNode->GetnodeName(), (char*)pAttrNode->Gettext());
}
}
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
void test100( void )
{
//定义变量
TCHAR szError[128]={0};
TCHAR szXmlName[MAX_PATH]={TEXT("100.xml")};
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
HRESULT Localhr = S_OK;
CoInitialize(NULL);
try
{
Localhr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(Localhr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!\n");
_com_issue_error(Localhr);
}
//声明
pProInstruction=pDoc->appendChild(pDoc->createProcessingInstruction(TEXT("xml"), TEXT("version='1.0' encoding='gb2312'")));
pDoc->appendChild(pProInstruction);
//root
MSXML2::IXMLDOMElementPtr pRoot;
pRoot = pDoc->createElement(TEXT("root"));
pDoc->appendChild(pRoot);
pDoc->save(szXmlName);
}
catch(_com_error& e)
{
_sntprintf_s(szError,sizeof(szError),TEXT("Error code:%d\nError Message:%s\nError Description:%s"),(int)e.WCode(), e.ErrorMessage(), (char*)e.Description());
MessageBox(NULL,szError, TEXT("错误"),MB_OK|MB_ICONSTOP);
return ;
}
}
/*
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
MSXML2::IXMLDOMCommentPtr pComment = NULL; // 注释
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL, pNode2 = NULL; // 节点
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
*/