عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
XML در دات نت : خواندن يک فايل |
مديريت وب |
12089 |
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 + ="
- Value : <b>" &_
reader.Value
& "</b></p><br /> "
End Select
If reader.AttributeCount > 0 Then
Do While
reader.MoveToNextAttribute()
strNodeResult += "  - Attribute : <b>" & _
reader.name & "</b>  
- 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
و اجرای آن ، خروجی زير نمايش داده می شود .
