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

翻译|其它|编辑:郝浩|2008-03-14 14:45:29.000|阅读 1592 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

以下为引用的内容:

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

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP