الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ASP.NET + XML

مغلق
بدأه محمد خليل أبو صلاح في 5 فبراير 2005 · 9 رد · 5,685 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

موضوع جديد و بداية مهمة لطريقة تعامل مع البيانات بشكل جديد و ضروري .. حقيقة من يقدر ضرورة "الملح للطعام" فقط من يقدر أهمية ال XML في بيئة الدوت نت .. سأتناول في هذا المقال المبسط جدا "الملح :D " كمقدمة لتطبيقات ترتكز على ال XML بشكل مباشر من حيث قراءة و كتابة البيانات من و إلى ملف XML ..

نبدأ الان في طريقة القراءة ..

كلنا نعرف انه من المهم ان نقوم بإضافة Namespace الخاص بال XML و هو

// C#
using System.Xml

طبعا الان يمكنناالتعامل مع مكتبة ال XML و التي تتيح لنا مجموعة من الكلاسات التي تساعدنا على أداء الواظئف الحيوية بتلك اللغة ..

سأكتب أولا كود القراءة ومن ثم سأشرح ما كتبته ..لكن قبل الكود اسمحولي أن أدرج محتوى ملف XML قمت بكتابته من أجل استخدامه في تطبيقنا هذا ..

// GuestBook.xml
<?xml version="1.0" encoding="utf-8" ?> 
<guestBook>
<post>
<name>Mohd. Khalil</name>
<body>Hi..It is a test page<br>Good ..</br></body>
<email>mohd_kh_80@hotmail.com</email>
</post>
<post>
<name>Mohd. Abdulmajeed</name>
<body>Hi Mohammed ..::<br>Good ..</br></body>
<email>albayed@hotmail.com</email>
</post>
</guestBook>

هذا كان محتوى الملف الذي سنتعامل معه و طبعا يمكنك ادراج ملف XML مباشرة من ال VS.NET من خلال إضافة Add new item و ستظهر عدة خيارات نختار منها XML file

او من خلال النوت باد مباشرة و نحفظ الملف في مجلد التطبيق ..

الان هذا هو كود القراءة ..

private void Page_Load(object sender, System.EventArgs e)
{
1: XmlTextReader reader=new XmlTextReader(Request.MapPath("guestBook.xml"));
2: while(reader.Read()){
3: Label1.Text+= reader.Value + "<BR>";} 
}

كما نرى في السطر الأول قمنا بتعريف ال reader و هو من نوع XmlTextReader و طبعا هذا الكلاس مشتق من ال Namespace الذي ذكرته بالأعلى .. و قمنا بإسناد مسار الملف له و طبعا ال Request.MapPath تعيد لنا المسار ال Virtual Path الذي نحن به و مثلا لو كان التطبيق على القرص C في مجلد wwwroot التابع للمجلد inetpub بداخل مجلد application فسيكون الناتج كما يلي :

الان ال Reader أصبح يحتوي على البيانات و يبقى أننا كيف نعرضها .. طبعا انا ذكرت طرق العرض باستخدام ال DataList و ال repeater و ال DataGrid و ال DataTable و لكن هنا

اكتفيت بأبسط الطرق و هي إسناد القيمة ل web control من نوع Label و اسميته Label1 ..

توضيح فقط لمبرمجين الفي بي ..

//C#
Label1.Text+="text"; == Label1.Text=Label1.Text + "text";
// VB.NET
Label1.Text=Label1.Text + "text"

الان نأتي لدورالكتابة للملف ..

سأبدا أولا بكتابة الكود ثم أشرح ما هو مكتوب ..

try
{
1: XmlTextWriter writer=new XmlTextWriter(Request.MapPath("guestBook.xml"));
2: writer.Formatting=Formatting.Indented;
3: writer.WriteStartDocument();
4: writer.WriteStartElement("name","");
5: writer.WriteString(strName.Text);
6: writer.WriteEndElement();
7: writer.WriteStartDocument();
8: writer.WriteStartElement("body","");
9: writer.WriteString(strBody.Text);
10: writer.WriteEndElement();
11: writer.WriteStartDocument();
12: writer.WriteStartElement("email","");
13: writer.WriteString(strEmail.Text);
14: writer.WriteEndElement(); 
15: writer.WriteEndDocument();
16: writer.Close();
}
catch
{
Response.Write(ex.Messege);
}

بداية قمت باستخدام try و catch خلال الكود و هي تقوم بتتبع الأخطاء و توقيف عملية التنفيذ للكود و إعادة الخطأ في اخر سطر من خلال عرض ال ex.Messege و ان شاء الله في موضوع لاحق سأتعرض لل try-catch-expiction و طرق استخدماها ..

عموما ما يهمنا الان هو الجزء الخاص بال XML ..

في السطر الأول عرفنا ال writer من نوع xmlTextWriter و أسندنا إليه مسار الملف الذي سنكتب إليه ثم في السطر الثاني حددنا طريقة التنسيق للبيانات في الملف ..في لسطر الثالث قمنا بفتح الملف و في الرابع قمنا بعمل Node جديدة و انشأنا عنصر للاسم name

من خلال طريقة ال writeStartDocument ثم في السطر الخامس قمنا بتحديد قيمة لعنصر الخاص بالاسم حسب القيم المستقبلة من ال strText.Text و هي أصلا عبارة عن حقل نصي أدرجناه في التطبيق يأخذ اسم strName و طبعا هناك للايميل و تعليق ..في السطر السادس أغلقنا العنصر من خلال writeEndElement

و هكذا حتى نسجل الايميل و التوقيع ثم نغلق الملف بالأسفل في السطر 15 .. في السطر 16 انهينا الكائن writer ..

هذا نكون انتهينا من هذا الدرس و ان سمح الوقت سنقوم بعمل تطبيق لسجل الزوار ان شاء الله قريبا لكن أود فعلا أن أركز خاصة لمبرمجي ال ASP ان الجانب النظري و الفهم الصحيح للكائنات و عينات الفضاء و كيفية التعامل مع بيئة الدوت نت هي من أهم العوامل

في التقدم في هذا العالم الرحب ..

عموما وقتا سعيدا و ممتعا

محمد خليل أبو صلاح

You can fly while you can touch the sky

#2

جزاك الله كل خير استاذ محمد ابو صلاح

ننتظر المزيد

#3

السلام عليككم ،،،

جزاك الله خيرا أخي محمد خليل أبو صلاح وزادك الله علما وعملا ، وادعوا الله عز وجل أن يكتب كل عمل تقدمه لخدمة الاسلام والمسلمين في ميزان حسناتك .

سأعمل على تطبيقه اليوم ، ولكن لدي سؤالين قبل أن أبد بالتطبيق .

 XmlTextWriter writer=new XmlTextWriter(Request.MapPath("guestBook.xml"));

1- عندما اكبت الامر بالشكل السابق ما هو المسار الذي سيتبعه البرنامج للحصول على الملف .

2- كيف اكتب المسار بالتحديد . مثلا :

c:\Inetpub\wwwroot/test.xml

وكيف اكتب جزء من المسار مثلا

wwwroot/test.xml

#4

شكراا أخي أبو محمد ..

الان التالي هو المسار باستخدام الطريقة MapPath كي تعيد لنا نفس المسار للمجلد الذي نحن به

Request.MapPath("guestBook.xml")


///تساوي الجملة السابقة
Request.MapPath("./guestBook.xml")

//معناها اننا في مجلد أعلى برتبة واحدة - يعني المجلد الأب
Request.MapPath("../guestBook.xml")

و هكذا .. نفس طريقة Server.MapPath

You can fly while you can touch the sky

#5

السلام عليكم

الف شكر الك اخي محمد انا من زمان عم انتظر هيك دروس

جزاك الله خيرا

#6

اخي الحبيبب محمد ابو صلاح

عندي سوأل كيف استطيع ان اشطب

احد ال child

اعني تاج احد الزوار

تم تعديل هذه المشاركة بواسطة ابو السموأل في 19 فبراير 2005 في 08:55

#7

كل Child تجد في مرحلة الكتابة لملف ال XML بعد الطرق Methods المستخدمة مثل :

1: writer.WriteStartElement("name","");
2: writer.WriteString(strName.Text);
3: writer.WriteEndElement();

في السطر الأول قمنا بإستخدام الطريقة WriteStartElement و نمرر لها إسم ال Child و هنا كان name ثم نستخدم الطريقة WriteString كي تقوم بكتابة القيمة و من بعدها ننهي ال Child عن طريق ال WriteEndElement و طبعا نتعامل هنا مع ال Children على أنها Elements .

طبعا في هذه الحالة لو قمت بإالغاء إدخال البيانات "مثل منطقة الكود التي كتبتها في ال 3 أسطر السابقة" سوف يترك ال Element الخاص به فارغا و كأنك قمت بإسناده ل txtName.Text وكانت قيمته فارغة .

هذا ما فهمته من سؤالك و عذرا للتقصير!

You can fly while you can touch the sky

#8

اخي يبدوا اني لم اصغ سوألي بوضوح

في المساء ساضع السوأل مع الكود حتى يكون المقصود واضح

لانو موضوع الملح على الطعام مهم بالنسبة لواحد مجرم اكل زي حالاتي

:)

#9

اخي الحبيب محمد المشكلة كالاتي

انا استخدم AdRotator1 لوضع اعلانات قي الموقع وطبعا كما تعلم ان AdRotator1

يقراء من ملف xml

وهذا هو الملف الخاص في الاعلانات تبعت موقع بوابة العلوم

اقتباس
<?xml version="1.0" standalone="yes"?>

<Advertisements>

  <Ad>

<ImageUrl>adv\baraa.gif</ImageUrl>

<NavigateUrl></NavigateUrl>

<AlternateText></AlternateText>

<Impressions>80</Impressions>

<Keyword>Topic1</Keyword>

</Ad>

<Ad>

<ImageUrl>adv\obada.gif</ImageUrl>

<NavigateUrl></NavigateUrl>

<AlternateText></AlternateText>

<Impressions>80</Impressions>

<Keyword>Topic2</Keyword>

</Ad>

</Advertisements>

كما تلاحظ اخي هناك اعلانان

اقتباس
baraa.gif

obada.gif

الان لنفرض ان مدة الاعلان انتهت ولنفرض انه

اقتباس
<Ad>

<ImageUrl>adv\obada.gif</ImageUrl>

<NavigateUrl></NavigateUrl>

<AlternateText></AlternateText>

<Impressions>80</Impressions>

<Keyword>Topic2</Keyword>

</Ad>

كيف استطيع حذف هذا الاعلان من ملف ال xml

#10

أخي أبو السموأل اعذرني فلا أملك ال VS.NET الان و لي فترة أعمل على ال Web Matrix ولا أستطيعا لوصول للمكتبات من أجل عملت جارب بشكل مرن..

عموما أنصح بشكل عام ان تعتمد على ال XmlDocument كالتالي :System.Xml.XmlDocument

وهنا وصلة لسجل زوار سوف تعطيك فكرة في إستخدام ال XmlDocument

http://www.devhood.com/tutorials/tutorial_...?tutorial_id=96

هذا يركز على عملية العرض و الإدخال فقط لا ال Delete

وهنا مرجعها من ال MSDN

http://msdn.microsoft.com/library/default....tclasstopic.asp

بخصوص الحذف انا ما جربتها والله حتى الان ولا أستطيع التجربة إلا عند وجود ال VS.NET عما قريب.

You can fly while you can touch the sky

هذا الموضوع مغلق.

مواضيع مشابهة