1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

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

شروع موضوع توسط hector2141 ‏15/9/12 در انجمن Web

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    XML ، یک زبان نشانه گذاری است که امکانات گسترده ای به منظور تشریح اطلاعات را ارائه می نماید.


    .مولفین اسناد XML به منظور تشریح اطلاعات از تگ ها و خصلت های اختصاصی خود استفاده می نمایند. ( تگ از قبل تعریف شده ای وجود ندارد ) . تگ های موجود در یک سند XML با یکدیگر ترکیب و به همراه مجموعه قوانینی که ارتباط بین آنان را مشخص می نماید ، ارائه می گردند . به منظور تعریف قوانین فوق از( DTD ( Documet Type Definition و XML Schema استفاده می گردد.XML در سال ۱۹۹۶ توسط کنسرسیوم وب ( گروه کاری 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.UTF۸ ) .
    مثال : استفاده از 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.UTF۸)
    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>
    مرحله دوم : پس از ذخیره کد فوق در فایلی با نام MakeXmlFile۱.aspx و اجرای آن فایل Visitors.xml با محتوای زیر ایجاد می گردد.
    [align=center:b۲b۳۲۵۷a۵۶]http://srco.ir/Articles/images/dotnetxml۱.jpg[/align:b۲b۳۲۵۷a۵۶]