جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


XML در دات نت : خواندن يک فايل
-(44 نفر) 
XML در دات نت : خواندن يک فايل
بازدید 1712
گروه: کامپيوتر

در مقاله "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  و اجراي آن ، خروجي زير نمايش داده مي شود . 

برگرفته از سايت سخا روش

اضافه کردن نظر
نام:
پست الکترونيک:
نظرات کاربران:
کد امنیتی: تصویر امنیتیتغییر عکس