您的位置:资讯频道 > 技术文档 > DHtml/Script

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

来源:csdn 作者:不详 时间:2008-03-14 点击:535 次
以下为引用的内容:

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

资讯搜索

 

推荐产品

VARCHART XGantt
全球知名的甘特图控件,能够实现如 Microsoft Project 般强大的项目管理功能。
TurboDemo 中文版
TurboDemo - 抓取屏幕截图并通过动态演示示例及手册解释软件、个人电脑应用程序、网站与产品。
BCGControlBar Library .NET Edition
该组件包含大量可自定义程度高、可设计性好的组件,使用户可创建精致美观的图形用户界面。