بخشی از مقاله
خواندن داده ها به فرمت XML و نمایش آنها بوسیله
DataList
XML امروزه بعنوان یکی از کاربردی ترین روشهای حفظ و انتقال داده ها به شمار می رود.
فرمت ساده آن، متنی بودن و همخوان بودن با سایر استانداردها، نرم افزارهای کاربردی امروزی و آینده را بیش از پیش به سوی خود سوق می دهد. در دنیای برنامه های تحت وب XML بعنوان یکی از روان ترین و ساده ترین روشها برای حفظ اطلاعات و یا انتقال اطلاعات ( WebSrvices ) به کار می رود. امروزه اکثر سایتهای اینترنتی بویژه آنها که برپایه NET. بنا شده اند، برای آن دسته از داده های دینامیکی خود که رکوردهای نه چندان زیادی را شامل می شوند از XML استفاده می کنند.
XML یک سیستم ذخیره اطلاعات است که می توان در زمینه های مختلف تعمیمش داد. شما فقط سعی کنید مکانیزم کاری و کاربرد XML رو درک کنید. درک مطالب و مباحث کمک زیادی به شما در برنامه نویسی میکند پس مثالهای موجود در مقاله را با دقت بخوانید.
ایجاد یک پایگاه داده بویسله XML
XML امروزه بعنوان یکی از کاربردی ترین روشهای حفظ و انتقال داده ها به شمار می رود. فرمت ساده آن، متنی بودن و همخوان بودن با سایر استانداردها، نرم افزارهای کاربردی امروزی و آینده را بیش از پیش به سوی خود سوق می دهد. در دنیای برنامه های تحت وب XML بعنوان یکی از روان ترین و ساده ترین روشها برای حفظ اطلاعات و یا انتقال اطلاعات ( WebSrvices ) بکار می رود. امروزه اکثر سایتهای اینترنتی بویژه آنها که برپایه NET. بنا شده اند، برای آندسته از داده های دینامیکی خود که رکوردهای نه چندان زیادی را شامل می شوند از XML استفاده می کنند.
به XML به عنوان یک پلیگاه داده نیز می توان نگریست. در یک فایل XML بمانند سایر پایگاههای داده نظیر SQL Server ، Access و ... می توان براحتی بر روی رکوردهای خاص Query گرفت و یا داده های موجود را اصلاح کرد.
در این مقاله سعی بر آن است تا استفاده از XML بعنوان پایگاه داده بصورت بسیار ساده ای مورد بحث قرار گیرد. بعنوان مثال فرض می کنیم که می خواهیم اطلاعات کتابهای مختلف را در یک صفحه aspx نمایش دهیم. برای این منظور در ابتدا به Database مربوط به اطلاعات کتابها نیاز
داریم. از آنجا که قصد استفاده از XML را داریم به ایجاد یک پایگاه کوچک به فرمت XML می پردازیم. در XML نیز مانند سایر پایگاههای داده می توانیم از Table استفاده کنیم. پس یک Table با نام Books ایجاد می کنیم که فیلدهای آن مطابق زیر می باشد.
Title | Abstract | Link | Image
از آنجا که XML دارای یک فرمت متنی می باشد لذا در هر ادیتور متنی می توان به ایجاد یک فایل XML پرداخت. Visual Studio .NET خود دارای بهترین ادیتور برای XML می باشد اما اگر قصد فارسی نویسی در XML را دارید MS Word 2003 پیشنهاد می شود هرچند که در ادیتور VS.NET نیز می توان داده های فارسی در XML درج کرد.
در این مقاله به ایجاد فایل XML در محیط VS.NET می پردازیم. برای این منظور از منوی File گزینه New و بعد File را انتخاب کنید. به این ترتیب یک فایل XML خالی در اختیار شما قرار می گیرد. در اینجا می بایست پایگاه داده مان را نامگذاری کنیم. برای این منظور یک المان با نام دلخواه به آن اضافه می کنیم در اینجا نام پایگاه داده را DataBook می گذاریم به صورت زیر عمل می کنیم.
<? xml……………….?>
<DataBook>
</DataBook>
خوب پس تا اینجای کار یک پایگاه داده بنام DataBook داریم حال باید Table مورد نظر را به این پایگاه داده اضافه کرد. نام Table را Books انتخاب کرده و بصورت زیر عمل می کنیم.
<DataBook>
<Books>
</Books>
</DataBooks>
Table مورد نطرمان همانطور که گفته شد دارای چهار فیلد Title ،Abstract ،Link ،Image می باشد که بصورت زیر به Table اضافه می شود.
<DataBook>
<Books>
<Title></Title>
<Abstract></Abstract>
<Link></Link>
<Image></Image>
</Books>
</DataBooks>
خوب در اینجا Table مورد نظر ما آماده شده است. اگر عادت به مشاهده Table بصورت معمول آن دارید کافیست در پایین صفحه ادیتور XML که در VS.NET باز کرده اید بر روی گزینه Data کلیک کنید. حال Table مورد نظر را بصورت همان Table هایی که قبلا" در SQL Server و Accsess و ... دیده اید مشاهده می کنید. حال کافیست اطلاعات مورد نظر کتابهایمان را وارد کنیم. چند رکورد بصورت دلخواه به این Table اضافه کنید. حال اگر در پایین صفحه گزینه XML را انتحاب کنیم اطلاعات وارد شده را به فرمت XML مشاهده می کنیم.
فرض می کنیم Database و Table مورد نظر ما آماده شده است قدم بعدی نحوه خواندن اطلاعات مربوط به کتاب ها می باشد که در قسمت دوم این مقاله به آن می پردازیم.
و اکنون مثالی دیگر:
من یک فایل در آدرس "C:\Data1.XML" دارم با محتوای زیر:
<?xml version="1.0" ?>
<Person>
<Name>AraSoft</Name>
<Age>18</Age>
<Sex>Male</Sex>
</Person>
حال لازمه که این اطلاعات که شامل اسم ، سن و... من هست در برنامه استفاده کنیم.پس ابتدا Namespace مورد نظر " System.Xml " رو به برنامه اضافه کرده و Imports System.Xml ... استاد میکنید.
و در قسمت مورد نظر کد مربوط رو مینویسیم:
Dim Reader as XMLNodeReader
Dim DC as New XMLDocument
Dim NickName, Sex as String
Dim Age as Long
DC.load ("C:\Data1.Xml")
Reader = New XMLNodeReader (DC)
Do until Reader.EOF
Reader.Read
Select Case Reader.LocalName
Case "Name"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Age"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Sex"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
End Select
Loop
حالا ما یک XML داریم و یک کد که از این اطلاعات استفاده میکند.شما کافیست از کد به این برسید که XML در چه حیطه ای است و کجا به درد می خورد، به راحتی میتوانید تمام مباحث XML را یاد بگیرید.
در مثالهای قبلی آشنایی کوچکی از XML پیدا کردیم.برای آموزش روش استفاده از XML بهتراست که آشنایی مختصری با XML پیدا کنید.
اکثر افرادی که قصد یادگیری XML را دارند، نمی توانند XML را خوب بفهمند. شما سعی کنید XML را یک سیستم ذخیره اطلاعات بدانید.تا بعدبا یادگیری قسمتهای بعدی XML با کاربردهای XML آشنا شوید و راحتتر بتوانید به صورت حرفه ای از آن استفاده کنید.البته این را یادآوری کنم که من فقط قصد آشنا سازی خوانندگان مقاله را با XML دارم نه آموزش کامل XML.
XML برای خود یک دستور نگارشی و املایی دارد. شما در حین یادگیری عبارتهای XML با آن آشنا می شوید.
تگها:
شما با عبارتهای HTML یا همان TAG ها آشنا هستید <تگ> در XML از همان تگها استفاده می شود ولی نکته مهم اینجاست که XML به شدت به حروف کوچک و بزرگ حساس است پس اگر شما تگ ابتدای خودتان را به این صورت نوشتید <TaG> باید تگ پایانی را هم بدین صورت بنویسید </TaG>.
اعلان شروع فایل XML:
فایل XML با یک اعلان شروع می شود که باید در اولین خط باشد (کاملا اختیاری):
<? xml version="1.0" ?>
حتما به بزرگی و کوچکی حروف دقت کنید. تگ اعلان XML به صورت ؟> و بعد کلمه XML و بعد از آن نوع version که تا کنون آخرین آن "1.0" بوده قرار می گیرد و سپس تگ پایانی آن ؟>.
نوشتن تگها:
تگها در حقیقت همان رکوردها هستند که فیلدهای متغییری میتوانند داشته باشند.شما اطلاعات خودتان را با استفاده از تگها
ذخیره می کنید مثلا برای ذخیره اسمتان: <Name>AraSoft</Name>
برای ذخیره اطلاعات شما به دو تگ نیاز دارید یکی آغازی و دیگری پایانی این دو در حقیقت تشکیل یک تگ صحیح را می دهند. یک تگ آغازی به صورت اول > و بعد اسم مورد نظر و سپس < نوشته می شود. تگ پایانی تنها یک تفاوت کوچک دارد که آن در اولین بخش تگ است. تگ پایانی به صورت </ و اسم مورد نظر و <. می بینید که در تگ پایانی علاوه بر > یک علامت / هم وجود دارد:
Begin: <Name>
End: </Name>
برای نوشتن تگها باید به این توجه کنید که اسم تگ شروع (<Name>) و اسم تگ پایانی (</Name>) نباید از نظر کوچکی و
بزرگی فرق کند. و نکته مهم این که شما باید XML خود رو با یک تگ اصلی بپوشانید و بقیه تگها را داخل آن قرار دهید مثل:
<? Xml version="1.0" ?>
<Root>
<Child1></Child1>
<Child2></Child2>
<Child3/>
</Root>
تداخل تگها:
اگر شما تگی را شروع کردید و می خواهید تگی را داخل آن قرار دهید، شروع و پایان تگ باید در داخل تگ اصلی باشد مانند زیر:
درست :
<? Xml version="1.0" ?>
<root>
<child1/>
</root>
:نادرست
<? Xml version="1.0" ?>
<root>
<child1>
</root>
</child1> ß-----Error
تگ پوچ:
شاید در مرور Xml های آمده در مثالهای فوق به این تگ <Child1/> رسیده و تعجب کنید که چرا قانون نوشتن تگها را نقض شده است ولی در حقیقت این خود یک دستور نگارشی است مبنی بر اینکه اگر تگی هیچ مقداری را در بر نمی گیرد بهتر است
به صورت <Name/> نوشته شود "شبیه به HTML" تا به راحتی برسی XML افزوده شود.
افزوردن ویژگی به تگ:
تگ ها قدرت داشتن ویژگی را دارند (Attribute).
1.<SectionOfSite Language="Persian">Home</SectionOfSite>
2.<SectionOfSite Language="English">Home</SectionOfSite>
شما می توانید برای مقدار هر تگ یک خاصیت یا ویژگی تعیین کنید. مثلا من در شماره 1 گفتم قسمت سایت=خانه و با زبان فارسی و در شماره 2 گفتم که قسمت سایت=خانه و به زبان انگلیسی.
این آشنایی کوچکی با XML نویسی بود در ادامه توضیحی درباره کد نویسی آن در VB.Net مطرح می کنم.
یک حالت ساده از خواننده های فایلهای XML در .Net همین XMLTextReader است.
این راننده (Driver) فقط رو به جلو حرکت می کند وهرچه در سر راهش باشد در حافظه اش ذخیره می کند. مهمترین قسمت اینکه از DTD و XMLSchema نیز پشتیبانی نمی کند و این برای شروع کار ما که با این دو نوع آشنا نیستیم بسیار مناسب است.
Imports System.Xml
Dim Reader as XmlTextReader
Reader = New XmlTextReader("Data\Setting.Xml")'فایل مورد نظر
Do Until Reader.EOF'در صورت به اتمام رسیدن فایل حلقه متوقف میشود
Reader.Read()'خواندن تگ بعدی
MsgBox(">---")
MsgBox("Depth: " & Reader.Depth)
'مقدار فرو رفتگی یک تگ داخل تگهای بالای خودش
MsgBox("LocalName: " & Reader.LocalName)
'خواندن اسم تگ <Book> localName is Book
MsgBox("Attribute: " & Reader.ReadAttributeValue)
'مقدار خاصیت قرار داده شده
MsgBox("Value: " & Reader.Value)
'محتوای داخلی تگ
MsgBox("---<")
Loop
همینطور که می بینید بسیار ساده می شود از این Object استفاده کرد. شمامی توانید به راحتی فایل XML خود را باز کرده و آن را به ترتیب بخوانید.
*همانطور که میبینید در قسمت خاصیت تگ اگر تگ خاصیتی را نداشته باشد مقدار برگشتی False میباشد.
*در قسمت Depth ؛ اگر تگی در داخلRoot اصلی باشد مقدار 1 را بر می گرداند و اگریک تگ در داخل این تگ باشد پس مقدار 2 را بر می گرداند و اگر خود Rootباشدمسلماً مقدار صفر 0 را بر می گرداند.
*شما می توانید با استفاده از LocalName یک فیلتر قرار دهید که هر LocalName که مقداری در بر نگیرد نمایش ندهد.
در این قسمت به تعریف یک نوع دیگر از خواننده های XML می پردازیم که نویسنده مقاله بیشتر از این نوع استفاده می کند بجز موارد خواص. البته این مبحث زیاد جای بحث ندارد به همین دلیل بسیار مختصر به شرح آن می پردازیم.
XMLNodeReader
همین طور که از اسمش پیداست برای بررسی XML بر اساس گره ها (Node) طراحی شده است. این Reader از DTD و XML Schema پشتیبانی نمی کند ولی تعریف های داخل DTD را می شناسد.