Guest NoOne Posted June 11, 2008 at 07:57 PM Report Share #190752 Posted June 11, 2008 at 07:57 PM 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. Link to comment Share on other sites More sharing options...
TheDark Posted June 11, 2008 at 08:21 PM Report Share #190758 Posted June 11, 2008 at 08:21 PM Se o documento é simples, podias fazer tu o parse. Evitavas matar uma formiga com um canhão. Desaparecido. Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 11, 2008 at 09:12 PM Report Share #190771 Posted June 11, 2008 at 09:12 PM 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 Link to comment Share on other sites More sharing options...
Rui Carlos Posted June 11, 2008 at 11:06 PM Report Share #190794 Posted June 11, 2008 at 11:06 PM Podes usar o lex (eventualmente em conjunto com o yacc) para resolves o problema. Ou tens a libxml do GNOME... Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 11, 2008 at 11:16 PM Report Share #190799 Posted June 11, 2008 at 11:16 PM 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... Link to comment Share on other sites More sharing options...
TheDark Posted June 12, 2008 at 01:49 AM Report Share #190816 Posted June 12, 2008 at 01:49 AM Tens que fazer alguma validação? Ou podes assumir que o ficheiro é sempre válido? Desaparecido. Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 12, 2008 at 08:20 AM Report Share #190822 Posted June 12, 2008 at 08:20 AM 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... Link to comment Share on other sites More sharing options...
TheDark Posted June 12, 2008 at 12:52 PM Report Share #190869 Posted June 12, 2008 at 12:52 PM 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. Desaparecido. Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 12, 2008 at 12:57 PM Report Share #190870 Posted June 12, 2008 at 12:57 PM 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... Link to comment Share on other sites More sharing options...
Rui Carlos Posted June 12, 2008 at 01:00 PM Report Share #190871 Posted June 12, 2008 at 01:00 PM 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). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 12, 2008 at 01:12 PM Report Share #190876 Posted June 12, 2008 at 01:12 PM 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... ? Link to comment Share on other sites More sharing options...
TheDark Posted June 12, 2008 at 01:53 PM Report Share #190881 Posted June 12, 2008 at 01:53 PM Não estás a alocar espaço para a string: char *dst = (char*)malloc(sizeof(char)*(stop-start+1)); Desaparecido. Link to comment Share on other sites More sharing options...
Guest NoOne Posted June 12, 2008 at 02:29 PM Report Share #190887 Posted June 12, 2008 at 02:29 PM 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 👍 Link to comment Share on other sites More sharing options...
TheDark Posted June 12, 2008 at 03:00 PM Report Share #190889 Posted June 12, 2008 at 03:00 PM Também podes usar a função strtok, na 1ª chamada com '>' e na 2ª com '<' como delimitadores. Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now