دهلران پی سی
سایت جامع علمی ,آموزشی,فرهنگی و تفریحی

در مقاله "XML در دات نت : ايجاد يک فايل " با نحوه ايجاد يک فايل XML با استفاده از XmlTextWriter آشنا شديم . در اين مقاله به بررسی  نحوه خواندن يک فايل XML  خواهيم پرداخت .
به منظور دستيابی به محتوای  يک سند XML ، می بايست  آن را Parse نمود تا به بخش مورد نظر دست يافت . به نرم افزارهائی که امکان انجام چنين عملياتی را فراهم می نمايند ، "پارسر"  گفته می شود . پارسرها دارای دو نوع متفاوت می باشند :

  • پارسرهای   ( DOM  : ( Document Object Model ،  يک  ساختار درختی  از سند XML را  در حافظه ايجاد نموده و امکان حرکت بر روی گره ها و يا خصلت های متفاوتی را در اختيار قرار می دهند.

  • پارسرهای   ( SAX  : ( Simple API for XML ، سندهای XML  را به صورت ترتيبی پردازش نموده و  نسبت به پارسرهای DOM حافظه بمرابت کمتری را اشغال می نمايند .

در MSXML ver 3.0 ، شرکت مايکروسافت دو پارسر فوق را ارائه نموده است . در دات نت نيز از پارسر DOM که دارای سازگاری و شباهت بسيار زيادی با MSXML است و پارسر SAX که دستخوش تغييرات متعددی نسبت به گذشته شده است ، استفاده می گردد . پارسرهای قبل از دات نت ، (مثلا" پارسر MSXML ) کلاس ها و اينترفيس های متعددی را به منظور انجام عمليات متقاوت بر روی اسناد XML ارائه نموده که با استاندارد پيشنهادی کنسرسيوم وب ، سازگاری و نزديکی قابل توجهی دارد. در دات نت علاوه بر استمرار وضعيت فوق ، روش های ساده و انعطاف پذيری به منظور کار بر روی اسناد XML ارائه شده است .


 

در مقاله "XML در دات نت : ايجاد يک فايل " با نحوه ايجاد يک فايل XML با استفاده از XmlTextWriter آشنا شديم . در اين مقاله به بررسی  نحوه خواندن يک فايل XML  خواهيم پرداخت .
به منظور دستيابی به محتوای  يک سند XML ، می بايست  آن را Parse نمود تا به بخش مورد نظر دست يافت . به نرم افزارهائی که امکان انجام چنين عملياتی را فراهم می نمايند ، "پارسر"  گفته می شود . پارسرها دارای دو نوع متفاوت می باشند :

  • پارسرهای   ( DOM  : ( Document Object Model ،  يک  ساختار درختی  از سند XML را  در حافظه ايجاد نموده و امکان حرکت بر روی گره ها و يا خصلت های متفاوتی را در اختيار قرار می دهند.

  • پارسرهای   ( SAX  : ( Simple API for XML ، سندهای XML  را به صورت ترتيبی پردازش نموده و  نسبت به پارسرهای DOM حافظه بمرابت کمتری را اشغال می نمايند .

در MSXML ver 3.0 ، شرکت مايکروسافت دو پارسر فوق را ارائه نموده است . در دات نت نيز از پارسر DOM که دارای سازگاری و شباهت بسيار زيادی با MSXML است و پارسر SAX که دستخوش تغييرات متعددی نسبت به گذشته شده است ، استفاده می گردد . پارسرهای قبل از دات نت ، (مثلا" پارسر MSXML ) کلاس ها و اينترفيس های متعددی را به منظور انجام عمليات متقاوت بر روی اسناد XML ارائه نموده که با استاندارد پيشنهادی کنسرسيوم وب ، سازگاری و نزديکی قابل توجهی دارد. در دات نت علاوه بر استمرار وضعيت فوق ، روش های ساده و انعطاف پذيری به منظور کار بر روی اسناد XML ارائه شده است .

کلاس XmlTextReader
کلاس XmlTextReader روشی سريع و موثر به منظور parse نمودن اسناد XML  را ارائه می نمايد.  کلاس فوق از حافظه بطرز کاملا" حساب شده و بهينه ای استفاده می نمايد. صرفا" گره جاری در حافظه نگهداری می گردد ( Cached ) و عنصری که قبلا" parse شده است  در حافظه وجود نخواهد داشت . در صورتی که به وجود عناصر قبلی نياز باشد ، می بايست  فايل XML  مجددا" از ابتدا و به صورت forward-only  خوانده شود.  کلاس فوق از XmlReader به ارث رسيده و متعلق به System.Xml می باشد .
با استفاده از متدها و خصلت های ارائه شده توسط کلاس فوق، می توان بسادگی به محتوا و عناصر موجود در يک سند XML دست يافت . متدهای ارائه شده همواره گره جاری را برمی گردانند و در ادامه می توان عمليات مورد نظر را بر روی آنان انجام داد .
به منظور استفاده از کلاس XmlTextReader می بايست از System.Xml استفاده و يک نمونه از کلاس فوق را ايجاد نمود .

 Dim reader As XmlTextReader  
 reader = New XmlTextReader ( Server.MapPath("visitors.xml") )

به منظور خواندن محتوای يک سند XML از متد Read و در يک ساختار تکرار استفاده می نمائيم .

Do while reader.read ()
     'عمليات مورد نظر
loop

در صورتی که يک گره با موفقيت خوانده شود، مقدار True برگردانده شده و در ادامه می توان با استفاده از متدها  و خصلت های  ارائه شده ، عمليات مورد نظر را انجام داد. بررسی نوع يک گره ، دستيابی به خصلت هائی خاص و يا محتوای يک گره نمونه هائی در اين زمينه می باشد .
جدول زير مهمترين متدها و خصلت های  کلاس XmlReaderClass را نشان می دهد .

کاربرد

متد / خصلت

 متد فوق ، cursor را بر روی گره بعدی قرار داده و درصورتی که  گره با موفقيت خوانده شود ، مقدار true را بر می گرداند . از متد فوق در يک ساختار تکرار و به منظور خواندن و انجام پردازش های لازم در خصوص اسناد XML استفاده می گردد .

   Read()

 خصلت فوق نوع گره را بر می گرداند ( المان ، متن و يا ساير موارد ).

  NodeType

خصلت فوق،  نام گره جاری را بر می گرداند .

  Name

 خصلت فوق ، محتوای گره را بر می گرداند .

  Value

 محتوای يک گره را بر اساس يک نوع داده خاص برمی گرداند. مثلا" متد ReadString محتوای يک گره را به صورت يک رشته برمی گرداند .

  ReadString(), Readxxxx()....
متد فوق ، مقدار خصلتی را که به عنوان پارامتر در اختيار آن گذاشته شده است ،  برمی گرداند .   GetAttribute("attb_name")

در صورتی که گره ای  دارای يک خصلت باشد، مقدار true و در غيراينصورت مقدار False ، برگردانده می شود .

  HasAttributes

مثال : استفاده از XmlTextReader  به منظور خواندن يک فايل  XML
 در اين مثال قصد داريم فايل Visitors.xml را که در مقاله "XML در دات نت : ايجاد يک فايل  با نحوه ايجاد آن آشنا شديم را خوانده و عناصر موجود در آن را به همراه مقادير نسبت داده شده به هر يک در خروجی نمايش دهيم .

محتوای فايل Visitors.xml



 
      http://localhost/MakeXmlFile1.aspx
      Mozilla/4.0 (compatible; MSIE 6.0; ...
      fa, en-us;q=0.5
  
  127.0.0.1
      /MakeXmlFile1.aspx
      0
      IE6
      Unicode UTF-8)
      0
      GET
       False
       GET
  

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>




  
  

 مرحله دوم :  پس از ذخيره کد فوق در فايلی با نام ReadXmlFile.aspx  و اجرای آن ، خروجی زير نمايش داده می شود . 




تاریخ: دوشنبه 27 خرداد 1392
ارسال توسط dlp

ورود کاربران

خوش آمدید! لطفا وارد حساب خود شوید

رمز عبور را فراموش کرده‌اید؟
حساب کاربری ندارید؟

فراموشی رمز عبور

نام کاربری یا ایمیل خود را وارد کنید

یا

ثبت نام کاربران

در چند ثانیه حساب کاربری خود را بسازید

قبلا ثبت نام کرده‌اید؟

نظرات کاربران

دیدگاه خود را با ما در میان بگذارید