求个XML的简易解析方式

YY_MM_DD 2011-09-22 02:26:33
有个问题想了一晚上了,技术刚入门,也没有接触过,就是我要写一个函数从一个XML文件里面解析下内容
XML文件格式大致为
<MOCID = 512,MOCTYPE = 1,MOCNAME = "POWER">
<MOCID = 256,MOCTYPE = 3,MOCNAME = "EMGRY">
这种格式
我想写的函数大致有两个参数,其中一个参数是引入的无符号整形MOCID,另外一个是出参MOCNAME,我想由这个MOCID取得MOCNAME的值,结果卡在取得值的方式上面了,
能请各位高手帮忙看看,能帮我写下取值的关键代码就好,
函数为void getMocName(unsigned long MocId,std:string MocName){}
能告诉我下方式即可,万分感谢
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyongjian 2011-09-22
  • 打赏
  • 举报
回复
同 楼上, 有库不用, 白费力!
iblold 2011-09-22
  • 打赏
  • 举报
回复
tinyxml 轻量,易用
赵4老师 2011-09-22
  • 打赏
  • 举报
回复
//xxx.xml
//<MOCID = 512,MOCTYPE = 1,MOCNAME = "POWER">
//<MOCID = 256,MOCTYPE = 3,MOCNAME = "EMGRY">
#include <stdio.h>
#include <string.h>
FILE *f;
char ln[256];
char fn[256];
unsigned long mocid;
char s[33];
void getMocName(unsigned long MocId,char *MocName) {
unsigned long MOCID;
char MOCNAME[33];
rewind(f);
MocName[0]=0;;
while (1) {
if (NULL==fgets(ln,256,f)) break;
if (2==sscanf(ln,"<MOCID = %lu,MOCTYPE = %*d,MOCNAME = \"%32[^\"]\">",&MOCID,MOCNAME)) {
if (MOCID==MocId) {
strcpy(MocName,MOCNAME);
break;
}
}
}
}
int main() {
strcpy(fn,"xxx.xml");
f=fopen(fn,"r");
if (NULL==f) {
printf("Can not open file %s!\n",fn);
return 1;
}
mocid=512;
getMocName(mocid,s);
printf("%d [%s]\n",mocid,s);
mocid=256;
getMocName(mocid,s);
printf("%d [%s]\n",mocid,s);
mocid=128;
getMocName(mocid,s);
printf("%d [%s]\n",mocid,s);
fclose(f);
return 0;
}
//512 [POWER]
//256 [EMGRY]
//128 []

坏男孩 2011-09-22
  • 打赏
  • 举报
回复
找个XML解析库就搞定 CMarkUp 就很好用
就想叫yoko 2011-09-22
  • 打赏
  • 举报
回复
为啥不用XML解析库呢

或者解析字符串也行
5t4rk 2011-09-22
  • 打赏
  • 举报
回复
没写过 XML解析

帮楼主顶
leer168 2011-09-22
  • 打赏
  • 举报
回复
为啥不用XML解析库呢?
qq120848369 2011-09-22
  • 打赏
  • 举报
回复
读一行,然后找出三个等号的位置,往后读到逗号或者>就是一个值。
YY_MM_DD 2011-09-22
  • 打赏
  • 举报
回复
由函数的第一个参数解析出第二个参数的值,麻烦写过的指导一下,谢谢

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧