C语言 如何读取xml文件中的数据并存入一个结构体中

xml文件中有以下数据:
<AccountList>
<account>123456,mjfgfk,Arshinz,0,3212006,Female,Dongguan,0</account>
<account>931230,nhfghe,Susan,0,031535,Female,Shenzhen,0</account>
</AccountList>

存入以下结构体中:
struct Account
{
char accountNum[7];
char password[7];
char name[15];
long balance;
char ID[20];
char sex[8];
char address[20];
int Num;
}account[10];

第1个回答  2015-06-08
一般是用第三方比如TinyXml,或者你自己实现。
第2个回答  推荐于2016-10-12
利用com、
用xml的dll就可以了,不多说了,具体再不懂再问我把。
我工作也有解析xml文件的 呵呵追问

完全不懂Orz。。没接触过xml 但是课设要用=A=

追答

#include
#ifdef UNDER_CE
#include "Msxml.h"
#else
#import "msxml3.dll" named_guids, raw_interfaces_only, raw_native_types
using namespace MSXML2;
#endif
void main()
{
CoInitialize(NULL); // 初始化COM。
CComPtr spXMLDOM;
HRESULT hr=spXMLDOM.CoCreateInstance (_uuidof(DOMDocument));
// 创建解析器实例。
VARIANT_BOOL bSuccess=false;
hr=spXMLDOM->load(CComVariant(L"xmlfile.xml"),&bSuccess);
// 装载XML文档。
CComBSTR bstrSS(L"Device");
CComPtr spDevice;
hr=spXMLDOM->selectSingleNode(bstrSS,&spDevice); //搜索"Device"。
CComQIPtr spDev;
spDev=spDevice;
// 设置"Device"的"name"属性。
hr= spDev->setAttribute(CComBSTR(L"name"),CComVariant("测试设备"));
CComPtr spModelNode;
hr=spXMLDOM->createNode(CComVariant(NODE_ELEMENT),CComBSTR("Model"),NULL,& spModelNode); // 创建"Model"节点。

CComPtr spInsertedNode;

hr=spDevice->appendChild (spModelNode,&spInsertedNode);
// 添加新节点到"Device"节点下面。
CComBSTR strID(L"3");
hr=spInsertedNode->put_text(strID);// 设置"Model"的文本。
hr=spXMLDOM->save(CComVariant("xmlfile.xml")); //保存文档。

// CoUninitialize(); // 结束对COM的使用。

return;
}

以上是code。
msxml3.dll是windows自带的dll,可以在c盘中找到。

还有就是你的xml文件做得不够好,你可以把xml作成这样的:

***
***
***
***
........

这样xml文件的结构才够清晰,通俗易懂,添数据的时候也可以理解每个TAG里的内容是什么意思。

以上如果还有问题,请继续追问。

本回答被提问者采纳

C语言中怎么将文件的数据读入到结构体数组中 比如 做一个字典 将中英词...
这个就要看你的数据组织了,比如说一个结构体 typedef struct { int index;char *word;char *translate;}dictionary;那么你文件里面的也就要按这个顺序排列,然后再用 dictionary dc;fscanf(fp,"%d%s%s",&dc.index,dc.word,dc.translate);只要按顺序就能正确读取出来的。

c语言入门代码009 从 txt 文本文件中加载数据到结构体数组
第一步,通过fopen函数以读取模式打开文件,准备从文件头部获取数据。第二步,文件中逐个读取结构体字段,并将数据保存到数组中,直到文件结尾。feof函数用于检测文件是否达到末尾,判断是否需要结束循环。在读取数据时,使用fscanf函数,与scanf相似,但添加了文件指针参数,用于在文件内容中执行读取操作。数据...

c语言怎么把一个结构体存入文件,在把文件读取怎
其次,使用文件读写函数读取文件。在C语言中提供了多种文件读写的函数:·字符读写函数 :fgetc和fputc ·字符串读写函数:fgets和fputs ·数据块读写函数:freed和fwrite ·格式化读写函数:fscanf和fprinf 最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。下面使用格式化读写函数fscanf和fprint...

c语言怎么把文件中没有对齐的2列数据的放到一个结构体中
这个很简单,首先用fgets获取一行,然后用一个for循环遍历该行,在第一个空格或者TAB出记录位置并将其改为'\\0',然后break,这是该行就被切割成两段了,分别用strcpy复制到对应的地方就OK了

c语言如何将文件中的数据读出来并存到链表中
文件I\/O通过fgets来读入整行(也就是一个struct的数据)然后借助sscanf或者strtok来分离数据并分别存入结构体 链表本身操作不困难吧,先有一个链表头,然后通过malloc创建新的项 如果是一次性连续读入数据(比如数据库的初始化),用一个while循环来控制就好 ...

C语言怎样将.txt文件中的数据写入到结构体中去
txt文件中的数据写入到结构体中去的源代码如下:include<stdio.h> include <string.h> \/\/可以退出的头文件 include <stdlib.h> \/\/结构体的长度 define DATALEN 15 \/\/函数声明 \/\/定义结构数组 struct wordUnit{ int id; \/\/id char word[10]; \/\/词语 char depId[10]; \/\/依存词语的id char...

C语言中把文件里面的几组数据依次读出来分别赋值给几个结构体变量(用链...
fread(buf,size,count,fp);\/\/buf输入数据起始地址,size 每个数据块的大小,count 每次写入的数据块个数,fp 文件指针 写好后是:while(!feof(fp)){ fread(&temp[i],sizeof(struct use),1,fp);\/\/这个读出来放数组里面 i++;} 问题是你读的是txt文件,完全可以用fscanf()函数么。

c语言如何从文件读入,并存放在链表中
\/\/举个单链表的例子,首先定义链表成员的结构体 struct filetext{char buf[BUFSIZE];struct filetext *next;};\/\/读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点 struct filetext * readfile(char * filename,struct filetext * ...

c语言如何将文件中的内容传到程序中并输出运行结果?
include <stdio.h> freopen("in.txt", "r", stdin); \/\/ 重定向输入为文件 freopen("out.txt", "w", stdout); \/\/ 重定向输出到文件 然后调scanf,gets等标准io都会从in.txt获取输入,调printf等会输出到out.txt。

c语言可以读取文件内容 自动创建变量吗?
第一步定义一个结构体,成员如下:struct Data { char type; \/\/假设i-int, d-double, c-char建议用缩写便于后面判断 void *ptr;struct Data *next;} 第二步建立结构体链表,打开文件读取文件内容,如果文件不规律可以读取每行,自己这个扫描函数;像数据库它是规律的,数据类型后面跟着值,首先读取...

相似回答