خواندن دیتابیس xml ویکی پدیا
سلام دوستان
من فایل دیتابیس ویکی پدیای فارسی که بصورت xml هست را دانلود کردم.
حال میخواستم محتویات این فایل رو بخونم و در برنامم استفاده کنم. ولی متاسفانه با هر برنامه ویرایشگری که بازش میکنم برنامه هنگ میکنه:ناراحت:. اعم از نت پد پلاس و....
حجم دیتابیس حدود 3 گیگ هست. برای این که بتونم محتویاتشو بخونم طبیعتا بایستی نام تگ های داخل فایل رو بدونیم. اما من هرکار کردم نتونستم محتویاتشو ببینم.
به نظرتون چیکار میتوان انجام داد؟
نقل قول: خواندن دیتابیس xml ویکی پدیا
برای بنده هم جالبه که حجم بالا رو چه طوری میشه مدیریت کرد
فکر کنم فقط کد نویسی و Thread بشه این کار رو کرد . خط به خط خوند
نقل قول: خواندن دیتابیس xml ویکی پدیا
برای بدست آوردن تگ ها میتونید چند سطر فایل را با استفاده از استریم بخوانید تا ساختار فایل رو متوجه بشید.
برای خواندن سطر ، تگ و ... میتونید یک استریم ایجاد و استفاده کنید
https://msdn.microsoft.com/en-us/lib...xmlreader.aspx
و یا
https://msdn.microsoft.com/en-us/lib...extreader.aspx
نقل قول: خواندن دیتابیس xml ویکی پدیا
با تشکر از راهنمایی..ای کاش مثالی در رابطه با موارد بالا میزدید...در صفحات مربوطه من نتونستم کاری از پیش ببرم.
در دستور زیر من اولین خط را از فایلم خوندم....به نظرتون چطوری خط دوم یا سوم را هم بخونیم؟
textBox1.Text = File.ReadLines("D:/wikipedia/fawiki-20140403-pages-articles.xml").First();
یا
using (var reader = new StreamReader("D:/wikipedia/fawiki-20140403-pages-articles.xml")) {
textBox1.Text = reader.ReadLine();
}
با دستور زیر هم اگه بیام خط سوم رو بخونم هنگ میکنه!!!
string[] lines = File.ReadAllLines("myfile.txt"); //File is in System.IO
string firstLine = lines[3];
در کل میخواستم 10 سطر یا 20 سطر اول این فایل حجیم رو بخونم.
نقل قول: خواندن دیتابیس xml ویکی پدیا
کاملا مشخصه، از StreamReader بایست استفاده کنید. یک حلقه نیاز دارید که متد ReadLine رو به تعداد مورد نظرتون فراخوانی کنید. در موردش مثال زیادی میتونید پیدا کنید.
https://msdn.microsoft.com/en-us/lib....aspx#Examples
تکه کد اول و سوم ، کل فایل رو در حافظه لود میکنند که حتی اگر ram کافی داشته باشید، زمان زیادی نیازه و البته استفاده ازشون منطقی نیست.
نقل قول: خواندن دیتابیس xml ویکی پدیا
سلام نرم افزار Kiwix یه نرم افزار متن باز برای همین ویکیپدیای افلاین هستش سورسش رو دریافت کنید و ببینید که چطوری عملیات رو انجام میدن
نقل قول: خواندن دیتابیس xml ویکی پدیا
برای باز کردن فایل های متنی با حجم خیلی زیاد از EmEditor استفاده کنید
نقل قول: خواندن دیتابیس xml ویکی پدیا
ممنون دوستان بابت نظرات.با دستور زیر تونستم چند خطی که میخواستم رو بخونم ولی متاسفانه آرایش متن طوری هست که کلادیگه منصرف شدم از دیتابیس استفاده کنم...یک سری تگ های خاصی داره که انگار بایستی کلا متن رو فیلتر کنم تا بشه ازش استفاده کرد.
using (var reader = new StreamReader("D:/wikipedia/fawiki-20140403-pages-articles.xml")) {
for (i = 0; i <= 400; i++) {
RichTextBox1.Text += reader.ReadLine();
}
}
در دستور بالا از خطا اول تا خط 400 را تونستم بخونم.....حالا اگر میخواستم از خط 500 تا 1000 را بخونم چگونه باید دستور رو مینوشتم؟
دوستان در مورد دستور زیر یه توضیحی میدید؟
RichTextBox1.Text = File.ReadLines("D:/wikipedia/fawiki-20140403-pages-articles.xml").Skip(2).Take(3).First()
منظور از Take و Skip چیه ؟
نقل قول: خواندن دیتابیس xml ویکی پدیا
skip میگه تا فلان جا رو کلا بیخیال شو
take میگه از اینجا تا فلان مقدار رو بگیر بیار
که اگه اشتباه نکنم iqueryable هست که میشه:
من با کل سطر ها کاری ندارم (یعنی همه رو اول load نکن) فقط همون قسمت به عبارتی استفاده بهینه از منابع رم و سرعت بیشتر
نقل قول: خواندن دیتابیس xml ویکی پدیا
نقل قول:
نوشته شده توسط
samiasoft
...
منظور از Take و Skip چیه ؟
این متدها مربوط به LINQ هستند که میتونید در موردش مطالب زیادی پیدا کنید.
نقل قول:
نوشته شده توسط
nunegandom
skip میگه تا فلان جا رو کلا بیخیال شو
take میگه از اینجا تا فلان مقدار رو بگیر بیار
که اگه اشتباه نکنم iqueryable هست که میشه:
من با کل سطر ها کاری ندارم (یعنی همه رو اول load نکن) فقط همون قسمت به عبارتی استفاده بهینه از منابع رم و سرعت بیشتر
IEnumerable<string> هست و در همان لحظه در حافظه load خواهد شد که برای این حجم از داده مناسب نیست.