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

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


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
XML در دات نت : خواندن يک فايل
-(44 Body) 
XML در دات نت : خواندن يک فايل
Visitor 1544
Category: کامپيوتر

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

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

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image