用C语言读取xml文件,怎么实现?

用C语言读取xml文件,怎么实现?


尚方宝剑之说
浏览 1982回答 3
3回答

陪伴而非守候

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144我上次才给人写过&nbsp;xml文件内容&nbsp;<?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?>&nbsp;-&nbsp;<aicomoa_response>-&nbsp;<country_list>-&nbsp;<country><id>7</id>&nbsp;<pid>0</pid>&nbsp;<continent_id>1</continent_id>&nbsp;<guohao>93</guohao>&nbsp;<cntitle>阿富汗</cntitle>&nbsp;<entitle>Afghanistan</entitle>&nbsp;<hztitle>阿富汗</hztitle>&nbsp;<jptitle>アフガニスタン</jptitle>&nbsp;<kotitle>??????</kotitle>&nbsp;<jp_pinyin>ア</jp_pinyin>&nbsp;<pinyin>AFuHan</pinyin>&nbsp;<sid>0</sid>&nbsp;<jibie>1</jibie>&nbsp;</country>-&nbsp;<country><id>8</id>&nbsp;<pid>0</pid>&nbsp;<continent_id>2</continent_id>&nbsp;<guohao>355</guohao>&nbsp;<cntitle>阿尔巴尼亚</cntitle>&nbsp;<entitle>Albania</entitle>&nbsp;<hztitle>阿尔巴尼亚</hztitle>&nbsp;<jptitle>アルバニア</jptitle>&nbsp;<kotitle&nbsp;/>&nbsp;<jp_pinyin>ア</jp_pinyin>&nbsp;<pinyin>AErBaNiYa</pinyin>&nbsp;<sid>0</sid>&nbsp;<jibie>1</jibie>&nbsp;</country></country_list></aicomoa_response>&nbsp;运行结果&nbsp;Info[0]=[id:7|pid:0|continent_id:1|guohao:93|cntitle:阿富汗|entitle:Afghanistan|hztitle:阿富汗|jptitle:アフガニスタン|kotitle:??????|jp_pinyin:ア|pinyin:AFuHan|sid:0|jibie:1|]Info[1]=[id:7|pid:0|continent_id:1|guohao:93|cntitle:阿富汗|entitle:Afghanistan|hztitle:阿富汗|jptitle:アフガニスタン|kotitle:??????|jp_pinyin:ア|pinyin:AFuHan|sid:0|jibie:1|]Press&nbsp;any&nbsp;key&nbsp;to&nbsp;continue&nbsp;代码&nbsp;#include&nbsp;<stdio.h>#include&nbsp;<string.h>main(){&nbsp;int&nbsp;i=0;&nbsp;FILE&nbsp;*fp;&nbsp;char&nbsp;szFileBuff[1024]&nbsp;=&nbsp;{0},&nbsp;szBuff[100][1024];&nbsp;char&nbsp;id[10]&nbsp;=&nbsp;{0},&nbsp;pid[10]&nbsp;=&nbsp;{0},&nbsp;continent_id[10]&nbsp;=&nbsp;{0},&nbsp;guohao[10]&nbsp;=&nbsp;{0},&nbsp;&nbsp;cntitle[64]=&nbsp;{0},entitle[64]=&nbsp;{0},hztitle[64]&nbsp;=&nbsp;{0},jptitle[64]&nbsp;=&nbsp;{0},&nbsp;&nbsp;&nbsp;kotitle[64]&nbsp;=&nbsp;{0},jp_pinyin[64]&nbsp;=&nbsp;{0},&nbsp;pinyin[64]&nbsp;=&nbsp;{0},sid[10]&nbsp;=&nbsp;{0},jibie[10]&nbsp;=&nbsp;{0};&nbsp;char&nbsp;*lFirst,&nbsp;*lEnd;&nbsp;&nbsp;&nbsp;fp&nbsp;=&nbsp;fopen("country.txt","r");&nbsp;if&nbsp;(fp==NULL)&nbsp;{&nbsp;&nbsp;printf("read&nbsp;XML&nbsp;file&nbsp;error!\n");&nbsp;}&nbsp;while(fgets(szFileBuff,&nbsp;1023,&nbsp;fp))&nbsp;{&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<id>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</id>");&nbsp;&nbsp;&nbsp;memcpy(id,&nbsp;lFirst&nbsp;+&nbsp;4,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;4);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<pid>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</pid>");&nbsp;&nbsp;&nbsp;memcpy(pid,&nbsp;lFirst&nbsp;+&nbsp;5,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;5);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<continent_id>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</continent_id>");&nbsp;&nbsp;&nbsp;memcpy(continent_id,&nbsp;lFirst&nbsp;+&nbsp;14,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;14);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<guohao>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</guohao>");&nbsp;&nbsp;&nbsp;memcpy(guohao,&nbsp;lFirst&nbsp;+&nbsp;8,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;8);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<cntitle>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</cntitle>");&nbsp;&nbsp;&nbsp;memcpy(cntitle,&nbsp;lFirst&nbsp;+&nbsp;9,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;9);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<entitle>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</entitle>");&nbsp;&nbsp;&nbsp;memcpy(entitle,&nbsp;lFirst&nbsp;+&nbsp;9,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;9);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<hztitle>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</hztitle>");&nbsp;&nbsp;&nbsp;memcpy(hztitle,&nbsp;lFirst&nbsp;+&nbsp;9,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;9);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<jptitle>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</jptitle>");&nbsp;&nbsp;&nbsp;memcpy(jptitle,&nbsp;lFirst&nbsp;+&nbsp;9,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;9);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<kotitle>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</kotitle>");&nbsp;&nbsp;&nbsp;memcpy(kotitle,&nbsp;lFirst&nbsp;+&nbsp;9,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;9);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<jp_pinyin>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</jp_pinyin>");&nbsp;&nbsp;&nbsp;memcpy(jp_pinyin,&nbsp;lFirst&nbsp;+&nbsp;11,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;11);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<pinyin>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</pinyin>");&nbsp;&nbsp;&nbsp;memcpy(pinyin,&nbsp;lFirst&nbsp;+&nbsp;8,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;8);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<sid>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</sid>");&nbsp;&nbsp;&nbsp;memcpy(sid,&nbsp;lFirst&nbsp;+&nbsp;5,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;5);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"<jibie>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;lEnd&nbsp;=&nbsp;strstr(lFirst&nbsp;+&nbsp;1,&nbsp;"</jibie>");&nbsp;&nbsp;&nbsp;memcpy(jibie,&nbsp;lFirst&nbsp;+&nbsp;7,&nbsp;lEnd&nbsp;-&nbsp;lFirst&nbsp;-&nbsp;7);&nbsp;&nbsp;}&nbsp;&nbsp;if&nbsp;((lFirst&nbsp;=&nbsp;strstr(szFileBuff,&nbsp;"</country>"))&nbsp;!=&nbsp;NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;sprintf(szBuff[i],"id:%s|pid:%s|continent_id:%s|guohao:%s|cntitle:%s|entitle:%s|hztitle:%s|jptitle:%s|kotitle:%s|jp_pinyin:%s|pinyin:%s|sid:%s|jibie:%s|",&nbsp;&nbsp;&nbsp;id,pid,continent_id,guohao,cntitle,entitle,hztitle,jptitle,kotitle,jp_pinyin,&nbsp;pinyin,sid,jibie);&nbsp;&nbsp;&nbsp;printf("Info[%d]=[%s]\n",i++,&nbsp;szBuff);&nbsp;&nbsp;}&nbsp;}&nbsp;fclose(fp);}

富国沪深

xml文件和txt文件相同,使用普通的文本操作函数即可读取。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。 2、例程:123456789101112131415161718192021222324#include<stdio.h>int&nbsp;a;char&nbsp;b,c[100];int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*&nbsp;fp1&nbsp;=&nbsp;fopen("input.xml",&nbsp;"r");//打开xml格式输入文件&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*&nbsp;fp2&nbsp;=&nbsp;fopen("output.txt",&nbsp;"w");//打开输出文件&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(fp1==NULL&nbsp;||&nbsp;fp2==NULL)&nbsp;{//若打开文件失败则退出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts("不能打开文件!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rturn&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fp1,"%d",&a);//从输入文件读取一个整数&nbsp;&nbsp;&nbsp;&nbsp;b=fgetc(fp1);//从输入文件读取一个字符&nbsp;&nbsp;&nbsp;&nbsp;fgets(c,100,fp1);//从输入文件读取一行字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fputs(c,fp2);//向输出文件写入一行字符串&nbsp;&nbsp;&nbsp;&nbsp;fputc(b,fp2);//向输出文件写入一个字符&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fp2,"%d",a);//向输出文件写入一个整数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(fp1);//关闭输入文件&nbsp;&nbsp;&nbsp;&nbsp;fclose(fp2);//关闭输出文件,相当于保存&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP