• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

flip

ler de ficheiro xml

13 mensagens neste tópico

Boas.

Alguem me sabe dizer como se faz para ler cenas de um ficheiro xml?

Arranjei este bocado de codigo mas nao o consigo perceber:

while (fgets(s, 90, fp)!=NULL)
{
  if (strstr(s, wrd)!=NULL)
    {
	fgets(s,90,fp)
	s1=strch(s,'>')
	sscanf(s1,"%d",&s[count].codigo)

	fgets(s,90,fp)
	s1=strch(s,'>')
	sscanf(s1,"%d",&s[count].num_acessos)

	fgets(s,90,fp)
	s1=strch(s,'>')
	sscanf(s1,"%d",&s[11].data)
    }

count++;
}

E depois como e que chamo essa funcao no main?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez o melhor seja procurares um biblioteca para processar XML.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tive aqui a ver e pareceme que com isto é possível ler o ficheiro:

void le_ficheiro(FORNECE)
{

char s[90];
char *wrd="fornecedores\0";
char *s1;

FILE *fp;
fp = fopen("pos_bd.xml", "r");
if (fp==NULL)
	printf("Impossivel abrir o ficheiro pos_bd.xml\n");

while (fgets(s, 90, fp)!=NULL)
{
  if (strstr(s,wrd)!=NULL)
    {
	fgets(s,90,fp);
	s1=strchr(s,'>');
	sscanf(s1,"%d",&x.id);

	fgets(s,90,fp);
	s1=strchr(s,'>');
	sscanf(s1,"%c",&x.nome[51]);

	fgets(s,90,fp);
	s1=strchr(s,'>');
	sscanf(s1,"%d",&x.n_cont);
    }
}
}

Mas ainda nao percebi como chamo esta funcao no main... será ler_ficheiro("qualquer coisa")...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguem me sabe ajudar...sff? Como ek chamo a funcao no main?

obrigado desde ja..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não sabes como chamar funções em C, devias ler uns tutoriais antes de tentares avançar na linguagem. Falta-te o tipo do parâmetro FORNECE (a menos que seja uma macro do pré-processador). Mas também não estás a utilizar FORNECE no código da função, por isso o melhor talvez seja retirares o argumento de lá.

Depois, para chamares a função é só fazeres le_ficheiro();

Mas francamente não me parece que essa função te resolva o problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque ele não sabe como chamar uma função. E se for um trabalho escolar pode fazer parte do mesmo ler e interpretar o XML.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, também estou a fazer esse projecto e temos mesmo que ler e interpretar o xml, não podemos usar processadores. Pois eu também estou com duvidas em inserir para lá os dados. Fiz as estruturas o malloc para guardar a memória para a estrutura, mas agora não faço ideia como inserir os dados no ficheiro xml.

Obrigado e cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei como tens a estrutura definida, mas basicamente será fazeres uma função que receba um apontador para uma estrutura e escreva um caracter '<', o nome, os atributos e respectivos valores, e caso não haja conteúdo (leia-se outros elementos dentro do próprio elemento, ou texto), escreve "/>"; caso tenha conteúdo, escreve '>', chama-se a ela própria novamente (recursivamente) para cada um dos conteúdos e finalmente escreve "</", o nome do elemento e '>'.

Depois é só chamar a função passando-lhe o elemento mais exterior que o XML será todo escrito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o trabalho deste ano da cadeira de programação de Electro....sinceramente...podiam esforçar-se em x de virem para aqui pedinchar!

EDIT: o FORNECE  :wallbash: já ias ver uns tutoriais de C antes de te atirares ao projecto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O pessoal de electrónica e afins não costuma gostar muito de programação :;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O pessoal de electrónica e afins não costuma gostar muito de programação :;)

E muitas vezes nem se esforça! (digo isto por ter ajudado um que tinha dúvidas de C pa...READ THE FU**ING TUTORIAL!)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora