xml字符串解析

该博客主要介绍如何从HTML标签中提取内容,通过解析XML字符串来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


功能:提取html标签中的内容

struct ssc
{
  char name[10];
  int age;
  int heigh;
  char school[51];
};
//    程序练习
//xml字符串解析函数
//
#include <stdio.h>
#include <string.h>

int main()
{
  struct ssc st_ssc;
  char strXMLBuffer[301];
  memset(strXMLBuffer,0,sizeof(strXMLBuffer));

  strcpy(strXMLBuffer,"<name>宋同学</name><age>123</age><heigh>234</heigh><school>某某大学</school>");

  GetXMLValue(strXMLBuffer,&st_ssc);

  printf("name=%s\n",st_ssc.name);
  printf("age=%d\n",st_ssc.age);
  printf("heigh=%d\n",st_ssc.heigh);
  printf("school=%s\n",st_ssc.school);

  return 0;
}

int GetXMLBuffer(const char *in_XMLBuffer,const char *in_FieldName,char *out_Value);

int GetXMLBuffer(const char *in_XMLBuffer,const char *in_FieldName,char *out_Value)
{
  //先生成xml标签头和标签尾
  char b_FieldName[21],e_FieldName[21];
  memset(b_FieldName,0,sizeof(b_FieldName));
  memset(e_FieldName,0,sizeof(e_FieldName));

  sprintf(b_FieldName,"<%s>",in_FieldName);
  sprintf(e_FieldName,"</%s>",in_FieldName);

  //printf("%s\n",b_FieldName);
  //printf("%s\n",e_FieldName);

  //寻找标签在xml字符串中的位置,可以定义两个指针
  char *start,*end;
  start=end=0;

  start=strstr(in_XMLBuffer,b_FieldName);
  end=strstr(in_XMLBuffer,e_FieldName);

  if( (start==0)||(end==0) )  return -1;       //等于代表没有检索到子串

  //截取标签中的内容
  strncpy(out_Value,start+strlen(b_FieldName),end-start-strlen(b_FieldName));

  return 1;
}
void GetXMLValue(const char *in_XMLBuffer,struct ssc *pst);
void GetXMLValue(const char *in_XMLBuffer,struct ssc *pst)
{
  //首先初始化结构体
  memset(pst,0,sizeof(struct ssc));

  GetXMLBuffer(in_XMLBuffer,"name",pst->name);

  char str[21];
  GetXMLBuffer(in_XMLBuffer,"age",str);
  pst->age=atoi(str);

  memset(str,0,sizeof(str));
  GetXMLBuffer(in_XMLBuffer,"heigh",str);
  pst->heigh=atoi(str);

  GetXMLBuffer(in_XMLBuffer,"school",pst->school);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值