【緊急】xmlからデータの取得についての質問です。
https://okwave.jp/qa/q10016550.html#answers の続きです。
自然言語処理について勉強しています。
Wikipediaのdumpデータからタイトルと本文を抜き出して処理をしようと思ってます。
xmlの処理について試しているのですが、エラーに見舞われて困っています。
プログラミングはあまり得意ではないです。
[やりたいこと]
1.wikipediaのdumpデータからタイトル(<title>~~~</title>の~~~部分)の取得。
2.同じように本文(<text>~</text>の~部分)の抽出
3.それらを処理するプログラム(こちらはできているのでこのプログラムに合わせて本文の内容を取得し、txtファイルにまとめたものが欲しい)
これについてのプログラムを作成してますが難航しています。
ポインタについてはあまり得意ではないのでそこら辺の知識がないので困ってます。
ご助力お願いします。
ソースコードです。
===========================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (){
int p,start,endt,endp,startp;
char pb[5];
char line[BUFSIZ];
FILE *fp = fopen("jawiki-20211220-pages-articles-multistream1.xml", "r");
char title[BUFSIZ];
//FILE *gt=fopen("list_1.txt","r");
FILE *fw = fopen("get_text_c.txt", "w");
if ((NULL == fp)||(NULL== fw )){
printf("aboooooooooooooooooooooooooooot");
abort();//終了、ここがうまくいってない?
}
while (p = ftell(fp), fgets(line, BUFSIZ, fp)) {
if (strstr(line, "<title>")){
pb[0] = p;//タイトルの始点
startp=(int)pb[0];//intに変換
}
else if (strstr(line, "</title>")){
pb[3]=p;//タイトルの終点
pb[2]=p-pb[0];//タイトルのバイト数
fprintf(fw, "%zu \t %zu \n", pb[2], pb[3]); //pb2とpb3の観察。
fgets(line,pb[2],pb[0]);//タイトルを取得
printf("%s",line);//表示
fprintf(fw,"%s",line);//書き込み
}
else if (strstr(line, "</page>")){
pb[1] = p - pb[0];
//fwrite(pb, sizeof(size_t), 2, fw); // ...
fprintf(fw, "%zu \t %zu \n", pb[0], pb[1]); //... テキスト形式で観察可能
}
}
fclose(fw);
fclose(fp);
}
==================
これを実行しましたが、出力されるテキストは空で、すぐに終了しています。(dumpデータが重いので時間はかかるはず。)
お願いします。