Jump to content

ler de ficheiro xml


flip

Recommended Posts

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?

Link to comment
Share on other 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")...

Link to comment
Share on other 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...

Desaparecido.

Link to comment
Share on other 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

Link to comment
Share on other 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.

Desaparecido.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.