Ir para o conteúdo
NoOne

XML Parser, C

Mensagens Recomendadas

NoOne    0
NoOne

Boa noite,

Estou a desenvolver um projecto em que numa parte a ser programada em C devo receber dados num ficheiro XML. As minhas questões são:

- Que Parsers indicam?

- Qual o mais simples de trabalhar?

É só mesmo para fazer parse de um simples documento XML.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

era so mesmo para um XML do género:

<lista-urls>

    <link>

              <url>blabla</url>

    </link>

    <link>

              <url>blabla</url>

    </link>

</lista-urls>

Eu tenho estado muito atarefado com a parte de Java deste projecto e por isso ainda não tive muito tempo para dedicar à parte de C... Alguém um exemplo assim muito simples? Seria uma ajuda enorme.

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

Podes usar o lex (eventualmente em conjunto com o yacc) para resolves o problema.

Ou tens a libxml do GNOME...

Pois eu ja tive a ver a libxml mas não percebi muito aquilo...  acho que tinha que instalar o iconv, mas tambem não percebi muito daquilo lol... e como isto é um codigo XML simples pensei que alguém tivesse um pequeno exemplo...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

Tens que fazer alguma validação? Ou podes assumir que o ficheiro é sempre válido?

É sempre um ficheiro válido porque é gerado e validado por mim em Java...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Assim sendo, se fosse eu fazia código para procurar pelas tags e retirar directamente o conteúdo que pretendia, em vez de estar a utilizar uma framework. Se o conteúdo do url é tudo o que precisas, basta leres as linhas sucessivamente, procurar por "<url>", procurar por "</url>", e se forem ambos encontrados, copiar o que está no meio.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

Assim sendo, se fosse eu fazia código para procurar pelas tags e retirar directamente o conteúdo que pretendia, em vez de estar a utilizar uma framework. Se o conteúdo do url é tudo o que precisas, basta leres as linhas sucessivamente, procurar por "<url>", procurar por "</url>", e se forem ambos encontrados, copiar o que está no meio.

eu ja consigo ficar só com as linhas em que tem:

<url>  {texto}  </url>

só nao consigo é retirar o que está dentro das tags...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Começas por eliminar os espaços no início da linha (e eventualmente no fim), e depois eliminas 5 caracteres no início e 6 no fim (isto se não tiver lá o \n).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

Começas por eliminar os espaços no início da linha (e eventualmente no fim), e depois eliminas 5 caracteres no início e 6 no fim (isto se não tiver lá o \n).

Pois, já pesquisei e não estou a conseguir fazer isso...

eu tinha uma "solução" semelhante:

char * substring(int start, int stop, char *text)
{
char *dst;
sprintf(dst, "%.*s", stop - start, &text[start]);
return dst;
}

No start punha 5 e no stop punha strlen-5...

Num array de strings tinha as linhas que tinham os urls e depois chamava essa função... Só que não estava a funcionar bem... só funcionava para o primeiro elemento do vector...

:-[

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NoOne    0
NoOne

Não estás a alocar espaço para a string:

char *dst = (char*)malloc(sizeof(char)*(stop-start+1));

nunca me lembrei disso... Obrigadao :thumbsup:

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade