Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void parseDoc(avl_tree_t *artigos,avl_tree_t_contribuidor *contribuidores, char *docname) {
- xmlDocPtr doc;
- xmlNodePtr cur;
- char* titulo;
- char* username;
- char* data;
- char* texto;
- doc = xmlParseFile(docname);
- if (doc == NULL ) {
- perror("Documento nao fez o parse correto");
- return;
- }
- cur = xmlDocGetRootElement(doc);
- if (cur == NULL) {
- perror("Documento Vazio");
- xmlFreeDoc(doc);
- return;
- }
- if (xmlStrcmp(cur->name, (const xmlChar *) "mediawiki")) {
- perror("Documento do tipo errado");
- xmlFreeDoc(doc);
- return;
- }
- cur = cur->xmlChildrenNode;
- while (cur != NULL) {
- if ((!xmlStrcmp(cur->name, (const xmlChar *)"page"))){
- char* title = parseSecondLevel(doc,cur,"title");
- titulo = malloc((strlen(title)+1)*sizeof(char));
- strcpy(titulo, title);
- long idT = atol(parseSecondLevel(doc,cur,"id"));
- long idR = atof(parseThirdLevel(doc,cur,"revision","id"));
- char* timeStamp = parseThirdLevel(doc,cur,"revision","timestamp");
- data = malloc((strlen(timeStamp)+1)*sizeof(char));
- strcpy(data,timeStamp);
- long idU = atof(parseFourthLevel(doc,cur,"revision","contributor","id"));
- char* user = parseFourthLevel(doc,cur,"revision","contributor","username");
- username = malloc((strlen(user)+1)*sizeof(char));
- strcpy(username,user);
- char* text = parseThirdLevel(doc,cur,"revision","text");
- texto = malloc((strlen(text)+1)*sizeof(char));
- strcpy(texto,text);
- long conta[2];
- palavras_and_length(texto,conta);
- avl_insert(artigos,titulo,idT,conta[0],conta[1],idR,data);
- if((strcmp(username,"-1")!= 0) && (idU != (-1))){
- avl_insert_contribuidor(contribuidores, username, idU);
- }
- free(titulo);
- free(texto);
- free(data);
- free(username);
- }
- cur = cur->next;
- }
- xmlFreeDoc(doc);
- }
- void palavras_and_length(char* text,long* conta){
- long palavras = 0;
- long i;
- for(i = 0; text[i] ; ++i){
- if(isspace(text[i]) == 0 && (isspace(text[i+1]) > 0 || text[i+1] == '\0'))
- ++palavras;
- }
- conta[0] = i;
- conta[1] = palavras;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement