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
از XmlTextWriter ، به منظور نوشتن داده در اسناد XML سازگار با استاندارد W3C XML 1.0 استفاده مي شود . کلاس فوق اطلاعات را cache نکرده و از آن به منظور نوشتن داده در يک سند XML به صورت forward-only ، استفاده مي گردد . XmlTextWriter نسبت به DOM داراي سرعت بمراتب بيشتري بوده و از حافظه کمتري استفاده مي نمايد ( در هر لحظه يک گره در حافظه قرار مي گيرد ) . کلاس فوق گره ها را يکي پس از ديگري ايجاد نموده و آنان را براي خروجي مورد نظر ارسال مي نمايد ( يک Stream ، شي ديگر ويا يک فايل موجود بر روي ديسک ) .
جدول زير مهمترين متدهاي اين کلاس را نشان مي دهد :
کاربرد |
متد |
از متد فوق به منظور شروع يک سند XML و درج اولين خط در آن که شامل معرفي فايل XML و نحوه encoding است ، استفاده مي گردد. |
WriteStartDocument() |
از متد فوق به منظور ايجاد يک عنصر جديد در سند XML استفاده مي گردد . نام عنصر جديد توسط رشته ورودي مشخص مي شود . |
WriteStartElement(string) |
از متد فوق به منظور ايجاد يک عنصر جديد در سند XML استفاده مي گردد . نام عنصر جديد و مقدار متناظر با آن توسط پارامترهاي ورودي مشخص مي گردد. |
WriteElementString(name, text_value) |
از متد فوق به منظور ايجاد يک خصلت و نسبت دهي مقدار مورد نظر به آن استفاده مي شود . خصلت ايجاد شده به عنصر جاري سند XML نسبت داده مي شود . |
WriteAttributeString(name, value) |
از متد فوق به منظور بستن عنصري که توسط متد WriteStartElementايجاد شده است ، استفاده مي گردد . |
WriteEndElement() |
از متد فوق به منظور اتمام عمليات نوشتن در سند XML استفاده مي گردد . |
WriteEndDocument() |
از متد فوق به منظور نوشتن محتواي سند XML به فايل مشخص شده در يک آدرس خاص، استفاده مي گردد . |
Close() |
به منظور شروع کار با کلاس 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 با محتواي زير ايجاد مي گردد.
برگرفته از سايت سخا روش