PDA

View Full Version : مبتدی: خواندن رشته ی خاص از فایل Text



abolfazl66
جمعه 24 بهمن 1393, 16:43 عصر
سلام !
بزرگواران کمک سریه و اضطراری می خوام !!!!!

من یک فایل Text ایجاد کردم که شامل اطلاعات یک جدول هستش !!!
به صورت زیر :
<DC>شرکت بعثت</DC>
<DN>1</DN>
<FD>13931120</FD>
<TD>13931125</TD>
<RT>789650006/RT>
یک کد میخوام که بین این علائم را استخراج کنه:
مثلا فقط کلمه : شرکت بعثت استخراج بشه !!!!
یا

13931120

jd.mn98
جمعه 24 بهمن 1393, 16:55 عصر
اینا xml هه ??
یا اینکه از طریق ریچ تکست باکس ذخیره کردین؟؟

abolfazl66
جمعه 24 بهمن 1393, 16:59 عصر
اینا xml هه ??
یا اینکه از طریق ریچ تکست باکس ذخیره کردین؟؟

مهم تولید نیست.
اینا با کد از C# اسجاد شده است.
اط دیتابیس گرفتم با تلفیق علایم نوشتم
مهم جستجو و خروج موارد کورد نظره !

partovinia
جمعه 24 بهمن 1393, 17:20 عصر
سلام .یعنی همه این متنها با تگ ها در جدول قرار داره یا فقط کلمه بین تگ ها در جدول هست که وارد فایل متنی شده ؟ میشه کامل تر بگی؟اگه از جد.ل میاد (یعنی باک اطلاعاتی) بنابراین باید روی جدول کار کنید .برای منم خیلی چالبه این مطلب کامل ترش کن لطفا

abolfazl66
جمعه 24 بهمن 1393, 17:57 عصر
سلام .یعنی همه این متنها با تگ ها در جدول قرار داره یا فقط کلمه بین تگ ها در جدول هست که وارد فایل متنی شده ؟ میشه کامل تر بگی؟اگه از جد.ل میاد (یعنی باک اطلاعاتی) بنابراین باید روی جدول کار کنید .برای منم خیلی چالبه این مطلب کامل ترش کن لطفا

دوست گرامی
من این دیتا ها رو از جدول خارج کرده و درون تگ ها قراردادم
....
اصل ماجرا جابجایی بین دو ذیتابیس هستش !
اطلاعات از دیتابیس شعبه یک شرکت به مرکز ازسال بعد از پردازش به شعبه ارسال میشوند !!
من از فایل Text استفاده می خام بکنم. ...

بیتا حکمت
جمعه 24 بهمن 1393, 20:31 عصر
اونظور که متوجه شدم شما گفتین اون تگ ها فایل Text هست ، یا حداقل داخل Textbox هست
دو سوال دارم

1- ایا این اطلاعات به صورت خط به خط نوشته شدن ، یا در یک خط ممکنه چند تگ وجود داشته باشه ؟

2- غیر از </DC> و چند مورد تگی که در پست اول اشاره کردین ، تگ های دیگری هم هستن ؟ یا کلا" فقط همین تگ هایی که نوشتین وجود دارن

abolfazl66
جمعه 24 بهمن 1393, 21:09 عصر
اونظور که متوجه شدم شما گفتین اون تگ ها فایل Text هست ، یا حداقل داخل Textbox هست
دو سوال دارم

1- ایا این اطلاعات به صورت خط به خط نوشته شدن ، یا در یک خط ممکنه چند تگ وجود داشته باشه ؟

2- غیر از </DC> و چند مورد تگی که در پست اول اشاره کردین ، تگ های دیگری هم هستن ؟ یا کلا" فقط همین تگ هایی که نوشتین وجود دارن


----
ببینید تگها مهم نیستن.

مهم این هست من ذستور سرچ و استخراج بین یک دو رشته را میخوام.
این اظلاهعات در یک فایل متنی می باشند

rahnema1
جمعه 24 بهمن 1393, 21:26 عصر
سلام
ببینید تگ ها مهم هستند اگه تگ ها سر جای خودشون باشند میشه با یک دستور کل فایل را در یک DataTable ریخت
این آموزشها را مطالعه کنید
http://csharp.net-informations.com/xml/how-to-read-xml.htm

http://csharp.net-informations.com/xml/xml-to-datagridview.htm

بیتا حکمت
جمعه 24 بهمن 1393, 22:05 عصر
----
ببینید تگها مهم نیستن.

مهم این هست من ذستور سرچ و استخراج بین یک دو رشته را میخوام.
این اظلاهعات در یک فایل متنی می باشند

دوست عزیز ببیند این متد مشکل شما رو حل می کنه



string between(string str1, string str2, string str3)
{
int start = str1.IndexOf(str2);
int end = str1.IndexOf(str3, start);
return str1.Substring(start + str2.Length, end - start - str2.Length);
}





نحوه استفاده




string teststring = " <DC> شرکت بعثت</DC>";
MessageBox.Show(between(teststring,"<DC>","</DC>"));


خروجی اش " شرکت بعثت " هست

بیتا حکمت
جمعه 24 بهمن 1393, 22:15 عصر
الانکه بیشتر می کنم ، با توجه به توضیحاتی که دادین راحت ترین کار اینکه کلا" تگ های HTML رو از Text پاک کنید ،با این روش دیگه نیاز نیست که کلمات بین هر دو تگ رو بدست بیارین



var noHtml = Regex.Replace(teststring, @"<[^>]*(>|$)|&nbsp;|&zwnj;|&raquo;|&laquo;", string.Empty).Trim();
MessageBox.Show( noHtml);

aminmousavi
جمعه 24 بهمن 1393, 22:42 عصر
سلام دوست عزیز .
همانطور که
rahnema1 (http://barnamenevis.org/member.php?305905-rahnema1) فرمودند ، شما باید مشخص کنید ساختار رو . زیاد نام تگ مهم نیست ! مهم اینکه شما یک سطر دارین یا چند سطر ؟
مثلا کل خروجی به این شکل هست ؟

<row>
<DC>شرکت بعثت</DC>
<DN>1</DN>
<FD>13931120</FD>
<TD>13931125</TD>
<RT>789650006</RT>
</row>


یا نه فقط مقدار همین 4 تا رو میخواین ؟ و دیگه خبری از سطر نیست ؟

abolfazl66
جمعه 24 بهمن 1393, 22:43 عصر
الانکه بیشتر می کنم ، با توجه به توضیحاتی که دادین راحت ترین کار اینکه کلا" تگ های HTML رو از Text پاک کنید ،با این روش دیگه نیاز نیست که کلمات بین هر دو تگ رو بدست بیارین



var noHtml = Regex.Replace(teststring, @"<[^>]*(>|$)|&nbsp;|&zwnj;|&raquo;|&laquo;", string.Empty).Trim();
MessageBox.Show( noHtml);




دوست بزرگوار، قضیه اینه که اطلاعات هر فیلد بین این تگها جای دادم، پس زمان استخراج باید بدونم کدوم فیلد هست !!!

abolfazl66
شنبه 25 بهمن 1393, 00:09 صبح
سلام دوست عزیز .
همانطور که
rahnema1 (http://barnamenevis.org/member.php?305905-rahnema1)
فرمودند ، شما باید مشخص کنید ساختار رو . زیاد نام تگ مهم نیست ! مهم اینکه شما یک سطر دارین یا چند سطر ؟
مثلا کل خروجی به این شکل هست ؟

<row>
<DC>شرکت بعثت</DC>
<DN>1</DN>
<FD>13931120</FD>
<TD>13931125</TD>
<RT>789650006</RT>
</row>


یا نه فقط مقدار همین 4 تا رو میخواین ؟ و دیگه خبری از سطر نیست ؟




---


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

بیتا حکمت
شنبه 25 بهمن 1393, 00:38 صبح
---


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

اغا چرا داد می زنین سر دختر مردم ؟! : دی ، خودتون گفتین تگ مهم نیست و به مهم نبودن تگ تاکید داشتین ، " مهم این هست من ذستور سرچ و استخراج بین یک دو رشته را میخوام. "
که کدشو تو پست شماره نه براتون گذاشتم .

abolfazl66
شنبه 25 بهمن 1393, 01:12 صبح
اغا چرا داد می زنین سر دختر مردم ؟! : دی ، خودتون گفتین تگ مهم نیست و به مهم نبودن تگ تاکید داشتین ، " مهم این هست من ذستور سرچ و استخراج بین یک دو رشته را میخوام. "
که کدشو تو پست شماره نه براتون گذاشتم .


اختیار دارین دختر مردم !!!
کد که نوشتین عالیه !
اما یک مشکل !
من توی این فایل متنی کلی سطر از جدول رو جا دادم‌!‌
پس ممکنه تعداد پیدا شده زیاد باشه !‌
باید به فکر دیگه ای کرد !!!!
اصل ماجرا در پست 5 امده !

SabaSabouhi
شنبه 25 بهمن 1393, 08:33 صبح
سلام
دوست گرامی، این که دوستان اصرار دارن ساختار رو بشناسن به این دلیل هست که شما اگه می‌خوای
این کار رو تو به برنامه و به صورت روتین انجام بدی، اولین چیزی که اهمیت دارن اعتبار سنجی اون فایل هست.
یعنی این نباشه که یه اپراتور فایل رو به اشتباه وارد کنه ( یا دستکاری کنه ) و اون رو به برنامه بده.
اگه شما از ساختار xml استفاده کنی، می‌تونی به راحتی با یک فایل xsd اعتبار اون رو کنترل کنی.
و خیلی هم راحت فایل رو بخونی و به نودهای مورد نظرت دسترسی داشته باشی.

من توصیه می‌کنم سعی نکنی فرمتی شبیه به ساختارهای موجود اختراع کنی، دقیقاً از ساختارهای
موجود استفاده کن تا از مزایای اون هم بهره‌مند بشی.

صبا صبوحی

abolfazl66
شنبه 25 بهمن 1393, 17:54 عصر
سلام
دوست گرامی، این که دوستان اصرار دارن ساختار رو بشناسن به این دلیل هست که شما اگه می‌خوای
این کار رو تو به برنامه و به صورت روتین انجام بدی، اولین چیزی که اهمیت دارن اعتبار سنجی اون فایل هست.
یعنی این نباشه که یه اپراتور فایل رو به اشتباه وارد کنه ( یا دستکاری کنه ) و اون رو به برنامه بده.
اگه شما از ساختار xml استفاده کنی، می‌تونی به راحتی با یک فایل xsd اعتبار اون رو کنترل کنی.
و خیلی هم راحت فایل رو بخونی و به نودهای مورد نظرت دسترسی داشته باشی.

من توصیه می‌کنم سعی نکنی فرمتی شبیه به ساختارهای موجود اختراع کنی، دقیقاً از ساختارهای
موجود استفاده کن تا از مزایای اون هم بهره‌مند بشی.

صبا صبوحی
*------------------------------


فایل xsd اعتبار اون رو کنترل کنی !!!‌
میشه توضیحبییشتر بدین !
چون من از XML استفاده کردم .

SabaSabouhi
شنبه 25 بهمن 1393, 19:00 عصر
سلام
فایل‌های xsd ساختاری شبیه به همون xml دارن و برای اعتبارسنجی xml به‌کار می‌ره.
شما می‌تونی اونجا ساختار xml خودت رو تعریف کنی و هنگام باز کردن فایل xml اعتبارش
رو بررسی کنی. اگه فایل درست ایجاد نشده باشه یا غیر مجاز ویرایش شده باشه، خطا می‌ده
و شما می‌تونی به کاربر پیام خطا بدی.
توی این ساختار شما تمام نود‌ها، attributeها و بچه‌ها رو تعریف می‌کنی.
من هر جا که به صورت جدی از xml استفاده می‌کنم، حتماً xsd رو کنارش دارم.

صبا صبوحی

abolfazl66
یک شنبه 26 بهمن 1393, 02:02 صبح
سلام
فایل‌های xsd ساختاری شبیه به همون xml دارن و برای اعتبارسنجی xml به‌کار می‌ره.
شما می‌تونی اونجا ساختار xml خودت رو تعریف کنی و هنگام باز کردن فایل xml اعتبارش
رو بررسی کنی. اگه فایل درست ایجاد نشده باشه یا غیر مجاز ویرایش شده باشه، خطا می‌ده
و شما می‌تونی به کاربر پیام خطا بدی.
توی این ساختار شما تمام نود‌ها، attributeها و بچه‌ها رو تعریف می‌کنی.
من هر جا که به صورت جدی از xml استفاده می‌کنم، حتماً xsd رو کنارش دارم.

صبا صبوحی

در صورت امکان توضیح بیشتر و رسا تر بدین !!

SabaSabouhi
یک شنبه 26 بهمن 1393, 09:19 صبح
سلام
راستش اینجا تو یه پست که نمی‌تونم آموزش بدم، اما خیلی مختصر اینطوری هست که
شما یک تگ xs:schema داری


<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Report"
targetNamespace="http://tempuri.org/Report.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/Report.xsd"
xmlns:mstns="http://tempuri.org/Report.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">


</xs:schema>

تو دل این تگ شما اول نوع فایل xml رو با ذکر نام ریشه مشخص می‌کنی


<xs:element name="reports" type="reports" />



element یعنی ما یه نود داریم که اسمش ( تگ استفاده شده ) باید reports باشه
بعد مشخص می‌کنی منظورت از "type="reports چیه


<xs:complexType name="reports">
<xs:sequence>
<xs:element name="report" type="report"/>
</xs:sequence>
</xs:complexType>



اینجا sequence یعنی این نود ( reports ) می‌تونه بچه از نوع report داشته باشه.
بعد باید نوع report رو براش معرفی کنی و به همین ترتیب تا آخر.
اگر یک نود لازم باشه که attribute داشته باشه به این صورت معرفی می‌کنی:


<xs:attribute name="name" type="xs:string" use="required" />



نباید نگران باشی که ممکنه فایل xsd برای کارت بزرگ‌تر از خود xml بشه.
اما عملکردش عالیه. من اولش می‌ترسیدم که برام دردسر بشه، اما بعد فهمیدم که
خیلی خیلی کمک می‌کنه که خیالم راحت باشه که فایل صحیح و بی‌اشکال به برنامه
تحویل می‌شه.

صبا صبوحی

abolfazl66
سه شنبه 28 بهمن 1393, 00:16 صبح
در حال تست می باشم !!