نمایش نتایج 1 تا 10 از 10

نام تاپیک: خواندن دیتابیس xml ویکی پدیا

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    Question خواندن دیتابیس xml ویکی پدیا

    سلام دوستان

    من فایل دیتابیس ویکی پدیای فارسی که بصورت xml هست را دانلود کردم.

    حال میخواستم محتویات این فایل رو بخونم و در برنامم استفاده کنم. ولی متاسفانه با هر برنامه ویرایشگری که بازش میکنم برنامه هنگ میکنه. اعم از نت پد پلاس و....

    حجم دیتابیس حدود 3 گیگ هست. برای این که بتونم محتویاتشو بخونم طبیعتا بایستی نام تگ های داخل فایل رو بدونیم. اما من هرکار کردم نتونستم محتویاتشو ببینم.

    به نظرتون چیکار میتوان انجام داد؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    برای بنده هم جالبه که حجم بالا رو چه طوری میشه مدیریت کرد
    فکر کنم فقط کد نویسی و Thread بشه این کار رو کرد . خط به خط خوند

  3. #3

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    برای بدست آوردن تگ ها میتونید چند سطر فایل را با استفاده از استریم بخوانید تا ساختار فایل رو متوجه بشید.


    برای خواندن سطر ، تگ و ... میتونید یک استریم ایجاد و استفاده کنید
    https://msdn.microsoft.com/en-us/lib...xmlreader.aspx
    و یا
    https://msdn.microsoft.com/en-us/lib...extreader.aspx

  4. #4
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: خواندن دیتابیس 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 سطر اول این فایل حجیم رو بخونم.
    آخرین ویرایش به وسیله samiasoft : سه شنبه 09 خرداد 1396 در 05:12 صبح

  5. #5

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    کاملا مشخصه، از StreamReader بایست استفاده کنید. یک حلقه نیاز دارید که متد ReadLine رو به تعداد مورد نظرتون فراخوانی کنید. در موردش مثال زیادی میتونید پیدا کنید.
    https://msdn.microsoft.com/en-us/lib....aspx#Examples
    تکه کد اول و سوم ، کل فایل رو در حافظه لود میکنند که حتی اگر ram کافی داشته باشید، زمان زیادی نیازه و البته استفاده ازشون منطقی نیست.

  6. #6

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    سلام نرم افزار Kiwix یه نرم افزار متن باز برای همین ویکیپدیای افلاین هستش سورسش رو دریافت کنید و ببینید که چطوری عملیات رو انجام میدن

  7. #7
    کاربر دائمی آواتار nunegandom
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    الان اصفهان
    سن
    32
    پست
    828

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    برای باز کردن فایل های متنی با حجم خیلی زیاد از EmEditor استفاده کنید

  8. #8
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: خواندن دیتابیس 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 چیه ؟

  9. #9
    کاربر دائمی آواتار nunegandom
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    الان اصفهان
    سن
    32
    پست
    828

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    skip میگه تا فلان جا رو کلا بیخیال شو
    take میگه از اینجا تا فلان مقدار رو بگیر بیار
    که اگه اشتباه نکنم iqueryable هست که میشه:
    من با کل سطر ها کاری ندارم (یعنی همه رو اول load نکن) فقط همون قسمت به عبارتی استفاده بهینه از منابع رم و سرعت بیشتر

  10. #10

    نقل قول: خواندن دیتابیس xml ویکی پدیا

    نقل قول نوشته شده توسط samiasoft مشاهده تاپیک
    ...
    منظور از Take و Skip چیه ؟
    این متدها مربوط به LINQ هستند که میتونید در موردش مطالب زیادی پیدا کنید.

    نقل قول نوشته شده توسط nunegandom مشاهده تاپیک
    skip میگه تا فلان جا رو کلا بیخیال شو
    take میگه از اینجا تا فلان مقدار رو بگیر بیار
    که اگه اشتباه نکنم iqueryable هست که میشه:
    من با کل سطر ها کاری ندارم (یعنی همه رو اول load نکن) فقط همون قسمت به عبارتی استفاده بهینه از منابع رم و سرعت بیشتر
    IEnumerable<string> هست و در همان لحظه در حافظه load خواهد شد که برای این حجم از داده مناسب نیست.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •