XML در دات نت : ايجاد يک فايل

iman_ebru

Active Member
XML ، يک زبان نشانه گذاری است که امکانات گسترده ای به منظور تشريح اطلاعات را ارائه می نمايد . مولفين اسناد XML به منظور تشريح اطلاعات از تگ ها و خصلت های اختصاصی خود استفاده می نمايند. ( تگ از قبل تعريف شده ای وجود ندارد ) . تگ های موجود در يک سند XML با يکديگر ترکيب و به همراه مجموعه قوانينی که ارتباط بين آنان را مشخص می نمايد ، ارائه می گردند . به منظور تعريف قوانين فوق از( DTD ( Documet Type Definition و XML Schema استفاده می گردد .
XML در سال 1996 توسط کنسرسيوم وب ( گروه کاری XML ) پياده سازی شده است . استاندارد باز و مستقل از پلت فرم بودن از جمله مهمترين ويژگی های XML محسوب می گردد. XML از آن زمان تاکنون دستخوش تغييرات متعددی شده و از آن در ابعاد گسترده ای نظير ذخيره سازی داده های مورد نياز که می بايست بين برنامه ها منتقل گردند، استفاده می شود ( خصوصا" برنامه هائی که بر روی اينترنت اجراء می گردند ) .

XML در دات نت
XML دارای جايگاهی خاص در فريمورک دات نت است . فريمورک دات نت نه تنها امکان استفاده موثر از XML در برنامه ها را در اختيار شما قرار می دهد بلکه از آن در مواردی متعددی نظير فايل های پيکربندی ، سرويس های وب و ADO.NET نيز استفاده می گردد. فريمورک دات نت مجموعه ای گسترده از کلاس ها به منظور کار با اسناد XML را ارائه نموده است که جملگی از System.Xml مشتق می شوند . سه namespace زير ويژگی های اصلی XML در دات نت را ارائه می نمايند :

- System.Xml ، مهمترين namespace ارائه شده در دات نت می باشد که اشياء سازگار با نسخه XML کنسرسيوم وب و مجموعه ای از اشياء جانبی به منظور کار با اسناد XML را ارائه می نمايد .با استفاده از اشياء سازگار با XML ارائه شده توسط کنسرسيوم وب ، امکان دستيابی به گره های موجود در يک سند XML فراهم می گردد . در اين رابطه اشياء reader و writer به منظور دستيابی به فايل های XML موجود بر روی ديسک و کلاسی به منظور بررسی اعتبار اسناد XML در مقابل يک DTD و يا XML Schema ، ارائه شده است .

-System.Xml.XPath . با استفاده از XML Path Language) XPath )، امکان دستيابی و پردازش بخش هائی خاص ازيک سند XML فراهم می گردد. مثلا" می توان عبارت خاصی را ايجاد نمود که گره های خاصی را در يک سند XML و بر اساس نام ، نوع و يا مقدار پيدا نمايد . به عبارات فوق ، XPath Queries گفته می شود . namespace فوق مجموعه ای از اشياء Navigator به منظور انجام عمليات تکراری در يک سند XML را نيز ارائه نموده است . System.Xml.XPath اينترفيس DOM کنسرسيوم وب را حمايت نمی نمايد .

- System.Xml.Xsl از ( XSL ( eXtensible Stylesheet Language به منظورتعريف فرمت مورد نظر برای داده های XML استفاده می گردد . کلاس فوق ، اشياء لازم به منظور تبديل اسناد XML که از آن با نام XSLT ياد می شود را نيز ارائه می نمايد . XSLT فرآيندی است که در آن با استفاده از يک سند XML ، اسناد مبتنی بر text ايجاد می گردند . namespace فوق ، همچنين يک کلاس به منظور پاس دادن آرگومان به يک XSLT Stylesheet برای تبديل شرطی را ارائه نموده است .

علاوه بر سه namespace اشاره شده از دو namespace ديگر به نام System.Xml.Schema و System.Xml.Serialization به منظور انجام عمليات خاص در ارتباط با استاد XML ، استفاده می شود .

ايجاد يک سند XML با استفاده از XmlTextWriter
نوشتن داده در يک سند XML به صورت forward-only ، استفاده می گردد . XmlTextWriter نسبت به DOM دارای سرعت بمراتب بيشتری بوده و از حافظه کمتری استفاده می نمايد ( در هر لحظه يک گره در حافظه قرار می گيرد ) . کلاس فوق گره ها را يکی پس از ديگری ايجاد نموده و آنان را برای خروجی مورد نظر ارسال می نمايد ( يک Stream ، شی ديگر ويا يک فايل موجود بر روی ديسک ) .
جدول زير مهمترين متدهای اين کلاس را نشان می دهد :

کد:
 WriteStartDocument()
از متد فوق به منظور شروع يک سند XML و درج اولين خط در آن که شامل معرفی فايل XML و نحوه encoding است ، استفاده می گردد.

کد:
WriteStartElement(string)
از متد فوق به منظور ايجاد يک عنصر جديد در سند XML استفاده می گردد . نام عنصر جديد توسط رشته ورودی مشخص می شود .

کد:
WriteElementString(name, text_value)
از متد فوق به منظور ايجاد يک عنصر جديد در سند XML استفاده می گردد . نام عنصر جديد و مقدار متناظر با آن توسط پارامترهای ورودی مشخص می گردد.

کد:
WriteAttributeString(name, value)
از متد فوق به منظور ايجاد يک خصلت و نسبت دهی مقدار مورد نظر به آن استفاده می شود . خصلت ايجاد شده به عنصر جاری سند XML نسبت داده می شود .

کد:
WriteEndElement()
از متد فوق به منظور بستن عنصری که توسط متد WriteStartElementايجاد شده است ، استفاده می گردد .

کد:
WriteEndDocument()
از متد فوق به منظور اتمام عمليات نوشتن در سند XML استفاده می گردد .

کد:
Close()
از متد فوق به منظور نوشتن محتوای سند XML به فايل مشخص شده در يک آدرس خاص، استفاده می گردد .

به منظور شروع کار با کلاس XmlTextWriter می بايست يک فايل و نحوه encoding آن مشخص گردد. encoding می بايست از نوع System.Text.Encoding باشد . ( مثلا" System.Text.Encoding.ASCII ، System.Text.Encoding.Unicode و يا System.Text.Encoding.UTF8 ) .

مثال : استفاده از XmlTextWriter به منظور ايجاد يک فايل XML
در اين مثال با استفاده از XmlTextWriter يک فايل XML با نام Visitors.xml و ساختار زير ايجاد می گردد .

کد:
<userInfo>
   <browserInfo>
      <urlReferrer>...</urlReferrer>
      <userAgent>...</userAgent>
      <userLanguages>...</userLanguages>
   </browserInfo>
  <visitInfo timeVisited> 
    <ip>...</ip>
    <rawUrl>...</rawUrl>
    <totalbytes>...</totalbytes>
    <browsertype>...</browsertype>
    <contentEncoding>...</contentEncoding>
    <contentlength>...</contentlength>
    <httpmethod>...</httpmethod>
    <IsSecureConnection>...</IsSecureConnection>
    <RequestType>...</RequestType>
   </visitInfo>
</userInfo>

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

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

<script language="vb" runat="server"> 
Sub Page_Load()
Dim writer As XmlTextWriter
writer = new XmlTextWriter(Server.MapPath("Visitors.xml"), Encoding.UTF8)

writer.WriteStartDocument()
writer.WriteStartElement("userInfo") 
writer.WriteStartElement("browserInfo") 

if (Request.UrlReferrer is "") then 
     writer.WriteElementString("urlReferrer", "none")
Else 
   writer.WriteElementString("urlReferrer",Request.Url.Tostring())
End if 


writer.WriteElementString("userAgent", Request.UserAgent)
writer.WriteElementString("userLanguages", String.Join(", ", Request.UserLanguages))
writer.WriteEndElement()

writer.WriteStartElement("visitInfo")
writer.WriteAttributeString("timeVisited", DateTime.Now.ToString())
writer.WriteElementString("ip", Request.UserHostAddress)
writer.WriteElementString("rawUrl", Request.RawUrl)
writer.WriteElementString("totalbytes", Request.TotalBytes)
writer.WriteElementString("browsertype", Request.Browser.Type)
writer.WriteElementString("contentEncoding", Request.ContentEncoding.EncodingName)
writer.WriteElementString("contentlength", Request.Contentlength)
writer.WriteElementString("httpmethod", Request.HttpMethod)
writer.WriteElementString("IsSecureConnection", Request.IsSecureConnection)
writer.WriteElementString("RequestType", Request.RequestType)

writer.WriteEndElement()
writer.WriteEndDocument()
writer.Close() 
End Sub
</script>

مرحله دوم : پس از ذخيره کد فوق در فايلی با نام MakeXmlFile1.aspx و اجرای آن فايل Visitors.xml با محتوای زير ايجاد می گردد.

[align=center:b2b3257a56]
dotnetxml1.jpg
[/align:b2b3257a56]

ايمان :oops:
 

جدیدترین ارسال ها

بالا