Jump to content

XML Parser, C


Guest NoOne

Recommended Posts

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

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

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

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

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

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

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.