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

نام تاپیک: بدست آوردن مقدار بین ۲ تگ

  1. #1

    بدست آوردن مقدار بین ۲ تگ

    سلام
    میخوام مقدار بین ۲ تگ را بدست بیارم
    مثلا
    <item>
    <author>1388/11/27</author>
    <author>1388/11/28</author>
    <author>1388/11/29</author>
    <author>1388/11/30</author>
    </item>

    مقادیر بین author را میخوام بدست بیارم.
    ممنون میشم کمکم کنید.

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

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    مطمئنی سوال را در انجمن درستی مطرح کردی این فرمت xml را میشه خیلی راحتتر با php خوندش ولی اینجام می تونی با یک مقایسه به جواب برسی

  3. #3

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    میدونم با php خیلی راحت تر هست با یک preg_match_all میشه همشونا پیدا کرد ولی من با C++‎ میخوام
    کلا php را فولم.
    این C++‎ هیچی نداره.
    هر کاری میخوای بکنی باید بری کلی لایبراری نصب کنی.!
    میتونی یه کد بهم بدی که اینا پیدا کنه؟

  4. #4
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    شما این لینک رو ببین همون چیزی که دنبالشی:
    http://www.artima.com/cppsource/xml_data_binding.html

    یک روش هم اینه که از سورسی که ضمیمه کردم استفاده بشه
    اینم لینک یک برنامه که اینجوری کار می کنه:
    http://www.codeproject.com/KB/cpp/paramio.aspx
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله amin1softco : چهارشنبه 28 بهمن 1388 در 00:36 صبح

  5. #5

    نقل قول: بدست آوردن مقدار بین ۲ تگ

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

  6. #6

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    ممنون هنوز بررسی نکردم.
    یک سوال دیگه هم داشتم.
    یه تابعی مثل splite یا explode برای C++‎ وجود نداره؟

  7. #7

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    این C++‎‎ هیچی نداره.
    هر کاری میخوای بکنی باید بری کلی لایبراری نصب کنی.!
    فراموش نکنید C همون زبانی هستش که باهاش سیستم عامل نوشتن و ++C پدر بزرگ C هستش ،

    پس قدرتش رو دست کم نگیر . آشنا نبودن با یکسری متود های یک زبان دلیل بر ضعف این زبان نیست ،

    همین برنامه شما با یک کد 4 - 5 خطی :


    #include <iostream>
    #include <conio>
    #include <string>
    using namespace std;
    int main(){
    string str = "<author>1388/11/27</author>";
    cout<<str<<endl;
    cout<<"============================\n";
    string s1 = str.substr(8,10);
    cout<<s1<<endl;
    getch();
    }
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg res.jpg‏ (7.4 کیلوبایت, 10 دیدار)






  8. #8
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    اگر هدر های بوست را به کامپایلر اضافه کنی می شه یک کارایی کرد
    http://www.boost.org/doc/libs/1_42_0...thm.string_hpp

    یعنی splite مستقیم به سی اضافه می شه ولی تا جایی که من می دونم خود سی چنین تابعی نداره .
    این کدی هم که دوستمون گذاشتند فقط برای همین نوعه یعنی اگه مثلا طول اطلاعات بیشتر از 10 کارکتر بشه کاربرد نداره ولی کلا نظامش تو سی همینه با کمی تغییر می شه تابع splite را پیاده سازی کرد.

  9. #9

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    این کدی هم که دوستمون گذاشتند فقط برای همین نوعه یعنی اگه مثلا طول اطلاعات بیشتر از 10 کارکتر بشه کاربرد نداره
    به هیچ وجه اینطور نیست ، چون تو این حالت رشته ما یک Data Type نیست ، بلکه یک Object ای از کلاس

    string هستش و این متود هر زیر رشته ای از رشته رو برای ما استخراج میکنه .






  10. #10
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    یعنی با این کد می شه به درستی این را خوند:

    <author>1388/1/27</author>

    البته تا جایی که من می دونم کار این تابع اینه که یک رشته بگیره و از اول رشته به اندازه عدد اول فاصله بگیره و به اندازه عدد دوم را استخراج کنه حالا اگه طول تاریخ کمتر از 10 باشه یا بیشتر باشه این به اندازه 10 کارکتر را جدا می کنه اصلا براش فرقی نداره تاریخه یا ادامه فیلد
    شاید من اشتباه می کنم

  11. #11

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    تست کردم
    مشکل داره
    اینا فقط اولیشا تشخصی میده و اگه یکم جابه جا بشه دیگه کار نمیکنه.
    string str = "<author>1388/11/27</author><author> 1388/11/28 </author>";

  12. #12
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    اینم شبیه سازی تابع explode پی اچ پی در سی:

    #include <string>
    std::string *explode (std::string original, std::string exploder=".") {
    std::string tmp;
    tmp=original;
    int num, loc;
    num=1;
    while (tmp.find(exploder)!=std::string::npos) {
    loc=tmp.find(exploder);
    tmp=tmp.substr(loc+exploder.length());
    num++;
    }
    std::string *result;
    result = new std::string[num];
    num=0;
    tmp=original;
    while (tmp.find(exploder)!=std::string::npos) {
    loc=tmp.find(exploder);
    result[num]=tmp.substr(0,loc);
    tmp=tmp.substr(loc+exploder.length());
    num++;
    }
    result[num]=tmp;
    return result;
    }

    در ضمن اگه از vC++‎2008 استفاده می کنی یک راه ساده تر هم وجود داره برای خواندن و نوشتن xml:
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  13. #13

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    ممنون خودم یه کد نوشتم که از همون کد دوستمون الهام گرفتم.
    فعلا کارم راه افتاد.
    من از لینوکس استفاده میکنم و به هیچ عنوان از محصولات کرک شده و.... استفاده نمیکنم.
    شما vC++‎‎2008 را نسخه ی اصلیشا خریدی یا کرک داری استفاده میکنی؟


    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
    string str = "salam <author>1388/11/27</author><author> 1388/11/28 </author><author> harchi khasti inja bezar ok? </author>";
    int pattern_number = 6;
    string pattern_title ="author";
    string s1 ;
    int find_item_place_first[100];
    int find_item_place_last[100];
    int find_item_number_first=0;
    int find_item_number_last=0;
    int find_item_number_total=0;
    for ( unsigned i = 0 ; i < str.size() ; ++i ){
    s1 = str.substr(i, pattern_number);
    if( s1 == pattern_title){

    find_item_number_total++;
    if( ( find_item_number_total % 2 ) == 0 ){
    int number_of_find = (i-2);
    find_item_number_last++;
    find_item_place_last[find_item_number_last]=number_of_find;
    }else{
    int number_of_find = (i+pattern_number+1);
    find_item_number_first++;
    find_item_place_first[find_item_number_first]=number_of_find;
    }
    }
    }
    cout<<"============================\n";
    for ( unsigned i = 1 ; i <= find_item_number_last ; ++i ){
    s1 = str.substr(find_item_place_first[i], ( find_item_place_last[i]- find_item_place_first[i] ));
    cout << s1 << " "<<endl;

    }
    return 1;
    }


  14. #14

    نقل قول: بدست آوردن مقدار بین ۲ تگ

    البته یه مشکلی الان پیدا کردم که یک کوچولو کد را تغییر دادم
    ممنون از همه

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

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