XML字符串的读写操作函数及示例程序

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

// OpXML.cpp : Defines the entry point for the console application.

//

//----------------------- Coded By Ronk --------------------------//

//----------------------- 2005-07-17 --------------------------//

#include "stdafx.h"

#include <stdio.h>

//---You must Setup the MSXML4.0 before using

#import <msxml4.dll>

using namespace MSXML2;

void xmlread(char *ch1,char *ch2,char *ch3);//Read the xmlstr and Get the Text of the Element

void xmlupdate(char *ch1,char *ch2,char *ch3);//Read the xmlstr and Update the Text of the Element

int main(int argc, char* argv[])

{

char xmlstr[1024]="<inesmsg><msghead><version>LZD</version><root>ioio</root></msghead></inesmsg>";

char strele[1024]="//version//";

char textstr[1024]="NNYX";

char value[1024];

printf("The xmlstr is :\n%s\n\n",xmlstr);

xmlread(xmlstr,strele,value); //befor Update

printf("The Text of Element befor Update is: \n%s\n\n",value);

xmlupdate(xmlstr,strele,textstr);//Change the Text of "<version>" with "NNYX"

printf("The Updated xmlstr is :\n%s\n\n",xmlstr);

xmlread(xmlstr,strele,value);//after Update

printf("The Text of Element after Update is :\n%s\n\n",value);

return 0;

}

void xmlread(char* msgstr,char* elestr,char *tex)

{

//Initialize

CoInitialize(NULL);

IXMLDOMDocumentPtr pXmlDoc;

IXMLDOMNodePtr pXmlNode;

HRESULT hr;

hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));

if (FAILED(hr))

{

printf("Faild to Create XMLDom Instance !");

pXmlDoc=NULL;

}

else

{

pXmlDoc ->async = VARIANT_FALSE;

//Load xmlmsg

_bstr_t xmlstr=(LPCSTR)msgstr;

if (!(pXmlDoc->loadXML(msgstr)))

{

printf("Failed to Load xmlstr:\n%s\n",(LPCSTR)pXmlDoc->parseError->Getreason());

pXmlDoc=NULL;

}

else

{

//Locate the Element

_bstr_t str=(LPCSTR)elestr;

pXmlNode = pXmlDoc ->selectSingleNode(elestr);

if(FAILED(pXmlNode))

printf("Faild to Locate the Element \n%s\n",str);

else

{

//Read the Text of Element

strcpy(tex,(LPCSTR)pXmlNode ->text);

//Realese

pXmlDoc.Release();

pXmlNode.Release();

}

}

}

}

void xmlupdate(char *msgstr,char *elestr,char *upstr)

{

//---Initialize

CoInitialize(NULL);

IXMLDOMDocumentPtr pXmlDoc;

IXMLDOMNodePtr pXmlNode;

HRESULT hr;

hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));

if (FAILED(hr))

{

printf("Faild to Create XMLDom Instance !");

pXmlDoc=NULL;

}

else

{

pXmlDoc ->async = VARIANT_FALSE;

//Load xml str

_bstr_t xmlstr=(LPCSTR)msgstr;

if (!(pXmlDoc->loadXML(msgstr)))

{

printf("Failed to load xmlstr:\n%s\n",(LPCSTR)pXmlDoc->parseError->Getreason());

pXmlDoc=NULL;

}

else

{

//Located the Element

_bstr_t str=(LPCSTR)elestr;

pXmlNode = pXmlDoc ->selectSingleNode(elestr);

if (FAILED(pXmlNode))

printf("Failed to Locate the Element \n%s\n",str);

else

{

//Update the Text of the Element

pXmlNode->text = upstr;

//Get the New xmlstr

strcpy(msgstr,(LPCSTR)pXmlDoc->xml);

//Realese

pXmlDoc.Release();

pXmlNode.Release();

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航