山寨:不是最好的,是最适合我们的!欢迎体验山寨 中文版MSDN

Blog @ Blog

当华美的叶片落尽,生命的脉络才历历可见。 -- 聂鲁达

常用链接

统计

积分与排名

BBS

Blog

Web

最新评论

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

// 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();
            }
        }
    }
}

posted on 2009-06-22 18:01 isabc 阅读(521) 评论(1)  编辑 收藏 引用

评论

# re: XML字符串的读写操作函数及示例程序[转] 2011-03-17 17:32 buy an essay online

Numbers of famous guys didn't have got cool writing skillfulness.  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


广告信息(免费广告联系)

中文版MSDN:
欢迎体验