نحوه خواندن يک فايل XML در دات نت New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  4  ارديبهشت  1396  2017  Apr.  24   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 XML در دات نت : خواندن يک فايل

 مديريت وب

11254

9

3.3

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

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

<?xml version="1.0" encoding="utf-8"?>
<userInfo>
  <browserInfo>
      <urlReferrer>http://localhost/MakeXmlFile1.aspx</urlReferrer>
      <userAgent>Mozilla/4.0 (compatible; MSIE 6.0; ... </userAgent>
      <userLanguages>fa, en-us;q=0.5</userLanguages>
   </browserInfo>
  <visitInfo timeVisited="10/15/2004 2:18:27 AM"> <ip>127.0.0.1</ip>
      <rawUrl>/MakeXmlFile1.aspx</rawUrl>
      <totalbytes>0</totalbytes>
      <browsertype>IE6</browsertype>
      <contentEncoding>Unicode UTF-8)</contentEncoding>
      <contentlength>0</contentlength>
      <httpmethod>GET</httpmethod>
       <IsSecureConnection>False</IsSecureConnection>
       <RequestType>GET</RequestType>
   </visitInfo>
</userInfo>

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

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

<script runat="server">
 sub Page_Load(obj as object, e as eventargs)
  Dim reader As XmlTextReader

  Try
     reader = New XmlTextReader ( Server.MapPath("visitors.xml") )
     Dim strNodeResult As String =""
     Dim objNodeType As XmlNodeType

     Do while reader.read ()
         objNodeType = reader.NodeType
         Select Case objNodeType
           Case XmlNodeType.XmlDeclaration   strNodeResult + =" XML Declaration : <b>" &_
                reader.Name & " " & reader.Value & "</b><br /> "
           Case XmlNodeType.Element   strNodeResult + =" Element : <b>" &_
                reader.Name & "</b><br /> "
           Case XmlNodeType.Text   strNodeResult + =" &nbsp; - Value : <b>" &_
                reader.Value & "</b></p><br /> "
        End Select
    If reader.AttributeCount > 0 Then
        Do While reader.MoveToNextAttribute()
           strNodeResult += "&nbsp - Attribute : <b>" & _
           reader.name & "</b> &nbsp - Value  <b>" & reader.Value & "</b><br />"
        Loop
   End If
  Loop
LblMessage.Text =" <P Align=""Center"" dir =""rtl""> خواندن فايل <b>Visitors.xml</b>
LblFile.Text = strNodeResult

Catch objError As Exception
        LblMessage.Text = "<b>* بروز اشکال در خواندن فايل </b>.<br /> "   &_
            objError.Message & "<br /> " & objError.Source
       Exit Sub
 Finally
       If ( Not reader Is Nothing ) then
          reader.close
      End If
  End Try
 End Sub
</script>
<html dir >
<form Language="vb" runat="server" >
   <asp:label id="LblMessage" runat="server" />
   <asp:label id="LblFile" runat="server" />
</form>
</html>

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



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382