PDA

View Full Version : سوال: کار با XML در VB.net



Alirezanet
شنبه 17 بهمن 1388, 00:06 صبح
هرکی سوالی در زمینه xml داشت بپرسه یا به توضیحات در پست های بعد مراجعه کنه.

payam_akr
یک شنبه 23 اسفند 1388, 01:01 صبح
سلام
من با vb.net و sql کار کردم
می خوام از xml استفاده کنم ولی مقاله مفید پیدا نکردم
چه طوری می شه با vb.net به یه وب سایت وصل شد و اطلاعات یک فرم رو بدون تایپ کردن از وب سایت دریافت کرد
فرض کن من یه نرم افازر نوشتم که بانک کتابه می خوام فقط اسم کتاب رو وارد کنم و با اتصال به اینترنت بقیه مشخصات کتاب از وب سایت amazon دریافت شه و نیاز نباشه من اسم نویسنده و... رو خودم تایپ کنم
ممنون می شم راهنماییم کنین!

Alirezanet
یک شنبه 23 اسفند 1388, 01:13 صبح
خوب اولا که مربوط به بحت Xml نمیشه ..
دوما باید به سایتی که میخوای وصل شی اون سایت این امکان رو بهت بده (مثلا گوگل میده ولی آمازون رو نمیدونم ) ...
این امکان هم میتونه توی قالب یه Xml باشه و یا Dll و ..
من پیشنهاد میکنم که سوالتو توی تاپیک مربوط به Vb.net بپرسی شاید دوستان بدونن که این امکان رو میشه از راه های دیگه گرفت یا نه !

ولی فکر نمیکنم که آمازون تابعی در اختیار شما قرار بده که بتونین ازش اطلاعات بگیرین بدون بازدید از سایتشون !

ولی باز سوال رو اونجا هم بپرسین ..
موفق باشی

payam_akr
یک شنبه 23 اسفند 1388, 20:43 عصر
ممنون همین کارو می کنم!

marzieh_
یک شنبه 22 فروردین 1389, 17:23 عصر
سلام
میشه یه کم در مورد کار کردن با xml توضیح بدین!
چه جوری میشه به جای دیتابیس یه از یه فایل xml استفاده کنیم؟(vb و C#‎ برام فرق نمیکنه!)

Alirezanet
یک شنبه 29 فروردین 1389, 21:45 عصر
خوب سعی میکنم مختصر و مفید جوابتونو بدم !
xml هم مثله یه فایل text میمونه با این تفاوت که میتونید هر چیزی که توش قرار میدین رو نشانه گذاری کنید .
من دقیق نمیدونم شما خود xml رو میخواین یاد بگیرین یا طریقه استفاده از اون توی مثلا vb.net ...

اگه بخواین توی vb.net استفاده کنید بهترین راهش برای ساخت همچین فایلی XmlTextWriter هستش که میتونین با اون فایلتون رو ایجاد و اطلاعات رو توش ذخیره کنید !
XmlTextReader هم برای خواندن اون میتونه روش خوبی باشه ولی محدودهو نمیشه باهاش تغییرات داد تو فایل و حذف کرد چیزیو ... چون فقط به صورت ترتیبی اطلاعات رو میخونه !
برای همچین کارهایی هم باید از Domاستفاده کنید !
با ترکیب این چند موضوع میتونید حتی به عنوان یک دیتابیس از فایلتون استفاده کنید! با این تفاوت که دیتابیس شما میتونه به صورت درختی و از قبل تعیین نشده هم اطلاعات رو توی خودش ذخیره کنه !

باز سوالتون رو ریز کنید و بپرسید شاید بتونم بهتر کمک کنم !

موفق باشین !

sepehr b
دوشنبه 31 خرداد 1389, 15:23 عصر
اينكه چه جوري ميشه با يك فايل XML بعنوان يك جدول اطلاعاتي كار كرد برايم هم جالبته و هم مورد نياز. خيلي ممنون ميشوم كه بتوانيد يك sample تو اين زمينه قرار دهيد. يا اينكه توضيحي بدهيد كه گوياي كار باشه.

و يك سوال: برنامه اي دارم كه در VB6 نوشته شده و حالا ميخواهم كه بتونم فايلهاي XML را Import & export كنه. بانك اطلاعاتي فعلي من Access و SQL Server است (بسته به Connection string( آيا ميشه چنين كاري را در VB6 كرد يا اينكه بايد توسط امكانات دات نت اين كار را انجام بدهم؟

آيا منطقي هست كه فايل XML را بصورت يك فايل Text ساده باز كنم و بخونمش و تگ هايش را تفسير كنم (يا اينكه تگ هايش را همونطوري بنويسم) و يا اينكه استثناهايي ممكنه پيش بياد كه اين كار رو ممكنه غير عملي كنه؟

alireza_eng
سه شنبه 08 تیر 1389, 07:56 صبح
سلام
من یه برنامه دارم مینویسم که به صورت offline اطلاعات رو تو sql ذخیره می کنه. من می خوام این نرم افزار فیلد ها رو به صورت یک فایل xml ذخیره کنه در آخر کار اون فایل xml رو توی sql بار گذاری کنم و از اطلاعات query بگیرم.
کمکم کنید

sia_2007
سه شنبه 08 تیر 1389, 20:40 عصر
دوست عزیز شما که رفتی یک ماه تحقیق کردی متوجه نشدی که ما چیزی داریم به نام :
System.XML.LINQ ؟
تازه در VB.Net خیلی راحت تر از #C میشه باهاش کار کرد.
در ضمن فکر کنم آمازون LINQ Provider داره. ولی مطمئن نیستم.
ولی مطمئنم سرویس Restful داره.
شما راحت ترین وسیله ممکن رو دارین.
حتی میتونین داینامیک هم کار کنین.
به این صورت :
http://barnamenevis.org/forum/attachment.php?attachmentid=52043&stc=1&d=1277831447

حتی این دوستمون هم دارن میگن؛ که خوندن و نوشتن توی XML با Text Writer غلط به نظر میرسه.
شما چرخ رو از نو اختراع کردی؛ اما به شدت پنجر و درب و داغون
یه نگاه به LINQ to XML تو VB بندازید.
این رو از 101 مثال LINQ پیدا کردم :
http://barnamenevis.org/forum/attachment.php?attachmentid=52044&stc=1&d=1277832085
اون بالاییه ترکیب LINQ to XML و dynamic بود.
این دومیه LINQ to XML با #C بود
VB اش که 100 درجه از این راحت تره.

kebriya
چهارشنبه 09 تیر 1389, 13:15 عصر
منم یه کاری شبیه کار alireza_eng می خوام انجام بدم فقط اینکه اگه بخوام با یه جدول کار کنم راحت xml ساختم و مشکلی ندارم ولی اگه بخوام چند تا جدول داشته باشم موقعی که میخوام از xml به بانک بفرستم میدونم چیکار کنم. یعنی چجوری به جدول خودش اضافه کنم؟

minajooon
دوشنبه 01 شهریور 1389, 11:36 صبح
سلام آقاي alirezanet
راستش دوست عزيز همين سوالي که شما اول داشتيد و بعد نوشتيد رفع شد
ما براي پرو‍‍ژمون همون مشکل رو داريم
"من در حال نوشتن برنامه ای هستم که میشه گفت به جای دیتابیس دارم از Xml استفاده میکنم ... گفتم شاید اینجا کسی پیدا بشه که با .net و xml آشنایی داشته باشه ...
من با Vb.net کار میکنم ولی کمی آشنا به C#‎ هم هستم ... در مورد ویرایش و نوشتن توی فایل های XML میتونین کمک کنید ؟!
دنبال توضیحات کامل کار xml توی .net میگردم ....

نکته (الان برنامه من یک فایل میسازه و لود هم میکنه درون یک Treeview ولی مشکل اینجاست که با تابعی که بتونه به یک XML اطلاعات اضافه کنه آشنایی ندارم ... )
"
من تو vb.net مي خوام
ميشه کمکم کنيد
و کامل توضيح بديد، من چيزي بلد نيستم
ممنون

negar_1366
دوشنبه 01 شهریور 1389, 12:08 عصر
سلام
خواستم بدونم من میتونم اطلاعات یه دیتاگریدویو را داخل یه فایل xml ذخیره کنم و بعد با استفاده از کریستال ریپورت اون فایل xml رو چاپ کنم.؟

ممنون میشم راهنمایی کنید...

alimanam
دوشنبه 01 شهریور 1389, 16:41 عصر
با سلام

دوستان عزیز به آدرس زیر یه سری بزنن اگه بازم مشکلی بود مطرح کنن . موفق باشید .

http://www.vbdotnetheaven.com/Articles/ArticleListing.aspx?SectionID=2&SubSectionID=124 (http://www.vbdotnetheaven.com/Articles/ArticleListing.aspx?SectionID=2&SubSectionID=124)

morrning
سه شنبه 02 شهریور 1389, 18:30 عصر
سلام
من با vb.net و sql کار کردم
می خوام از xml استفاده کنم ولی مقاله مفید پیدا نکردم
چه طوری می شه با vb.net به یه وب سایت وصل شد و اطلاعات یک فرم رو بدون تایپ کردن از وب سایت دریافت کرد
فرض کن من یه نرم افازر نوشتم که بانک کتابه می خوام فقط اسم کتاب رو وارد کنم و با اتصال به اینترنت بقیه مشخصات کتاب از وب سایت amazon دریافت شه و نیاز نباشه من اسم نویسنده و... رو خودم تایپ کنم
ممنون می شم راهنماییم کنین!

دوست عزیز اگه زبانت قوی هست توی سایت http://www.wrox.com/WileyCDA/ میتونی تا دلت بخواد کتابای خوب پیدا کنی. در مورد xml ,vb.net هم دو سه تا کتاب خوب داره

hamedmaker2
یک شنبه 12 آذر 1391, 00:36 صبح
سلام دوستان
کسی میتونه نحوه کار با xml در .net رو با یه برنامه ساده توضیح بده؟

reza_devel0per
یک شنبه 12 آذر 1391, 01:31 صبح
سلام دوستان
کسی میتونه نحوه کار با xml در .net رو با یه برنامه ساده توضیح بده؟

http://barnamenevis.org/showthread.php?367534-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-XML-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%AA%D8%AD%D8%AA-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA

Alirezanet
یک شنبه 12 آذر 1391, 02:26 صبح
سلام به همه !
با عرض پوزش ! اگه جوابتون رو ندادم تا الان !
ابن مطلب رو من حدود 3-4 سال پیش گذاشته بودم و خودم هم تا الان یادم نبود چنین تاپیکی وجود داره !

برای کار با Xml خیلی امکانات بهتر و ساده تری هست که اینجا توضیح ندادم تا به الان !
اگه هنوز کسی مشکلی توی این زمینه داشت بپرسه حتما کمکش خواهم کرد .

موفق باشید

Alirezanet
یک شنبه 12 آذر 1391, 03:04 صبح
فقط این مورد رو اضافه کنم !:

در روش های قدیمی کار با xml مجبور بودیم از کلاسهای xmlTextWriter و xmlTextReader و در نهایت برای کارهای حرفه ای تر از Dom استفاده کنیم .
ولی بعد از فریم ورک 3.5 دیگه نیازی به استفاده از این روش ها و سختیهای اون نیست ! (به خصوص در VB !!!! ) (استفاده از LinqToXml )

به طور مثال برای ایجاد یک فایل xml در vb.net میتونید به این شکل مستقیما بین کدهای برنامتون اون رو تولید کنید :


Sub CreateXmlFile()

Dim MyXml = <element1>

<element2>

<element3 Attribute1="value" attribute2="test" attribute3="5">

Content 3

</element3>

Content2

</element2>

Contetnt1

</element1>



MyXml.Save("C:\Test.xml")

End Sub


خوب همونطور که مشاهده میکنید خیلی راحت بین کدهام یک xml ساختم و توی درایو c ذخیره کردم ! به همین راحتی :)

حالا شاید سوال پیش بیاد که اگه مقدار attribute ها ویا content ها یا ... رو بخوایم مثلا از یک متغیر بخونیم باید چیکار کرد ؟
این هم خیلی سادست . مثال :

Sub CreateXmlFile()



Dim AttValue1 As Integer = 10

Dim ContentValue As String = "مقدار درون کانتنت"



Dim MyXml = <element Attribute1=<%= AttValue1 %> attribute2="test" attribute3="5">

<%= ContentValue %>

</element>



MyXml.Save("C:\Test.xml")

End Sub

خوب همینطور که مشاهده کردید 2 متغیر ساختم و به xml اضافشون کردم ! با استفاده از :

<%= %>


شما با استفاده از این علامت هرجای xml که خواسیم میتونید کد Vb بزنید :)

و در نهایت برای خواندن اطلاعات از xml هم میتونید از LinqToXml استفاده کنید که دوستانی که با Linq آشنایی دارند فکر نمیکنم مشکلی داشته باشند !
مثال :
Sub ReadXmlFile()

Dim doc = XDocument.Load("c:\test.xml")

Dim result = doc.<Root>.<element>(0)

End Sub


این query اولین element رو از فایل xml شما بر میگردونه !

این query ها رو میتونید خیلی پیچیده تر و بهتر هم استفاده کنید ولی به دلیل کمبود وقت و داشتن مرجع کامل برای این موضوع زیاد توضیح نمیدم . اگه مشکلی بود در خدمتم !
برای یادگیری به این لینک مراجعه کنید :
http://msdn.microsoft.com/en-us/vstudio/bb738050

mohseni12345
یک شنبه 12 آذر 1391, 05:17 صبح
اینجا یه سری کد ساده گذاشتم، ببید بدردت می خوره؟
روش کار با فایل XML در ویژوال بیسیک دات نت VB.NET http://m-vb6.blogfa.com/post-21.aspx (http://m-vb6.blogfa.com/post-21.aspx)

Hossis
یک شنبه 12 آذر 1391, 19:11 عصر
فقط این مورد رو اضافه کنم !:

در روش های قدیمی کار با xml مجبور بودیم از کلاسهای xmlTextWriter و xmlTextReader و در نهایت برای کارهای حرفه ای تر از Dom استفاده کنیم .
ولی بعد از فریم ورک 3.5 دیگه نیازی به استفاده از این روش ها و سختیهای اون نیست ! (به خصوص در VB !!!! ) (استفاده از LinqToXml )

به طور مثال برای ایجاد یک فایل xml در vb.net میتونید به این شکل مستقیما بین کدهای برنامتون اون رو تولید کنید :

مثال :

Sub CreateXmlFile()
Dim AttValue1 As Integer = 10
Dim ContentValue As String = "مقدار درون کانتنت"
Dim MyXml = <element Attribute1=<%= AttValue1 %> attribute2="test" attribute3="5">
<%= ContentValue %>
</element>

MyXml.Save("C:\Test.xml")

End Sub
]

اگر بخواهیم این کد رو توی یک حلقه پیاده کنیم و مقدار دهی کنیم, چطوری هست؟؟

Alirezanet
دوشنبه 13 آذر 1391, 13:59 عصر
شما میتونید با استفاده از همون علامت <%=> این کار رو انجام بدید ! فقط باید هر قسمت رو جدا بنویسید و به همدیگه اضافشون کنید !
مثال:
Dim xml = <element>

</element>

For i = 0 To 10
xml.Element(0).Add(<testElement><%= i %></testElement>)
Next
اینجا یک element ساخته شده و به اون با یک For حدود 11 TestElement بهش اضافه شده !
در اینجا مهم فقط اینه که بتونید یک Query خوب بنویسید و به اون Element مورد نظر مقدار هاتون رو اضافه کنید !

sina_saravi1
دوشنبه 13 آذر 1391, 16:16 عصر
یه راه خیلی ساده و جالب هم برای کار با xml وجود داره
اونم استفاده از دیتا ست هست.
دیتا ست خودش یه تابع داره که اطلاعات فایل xml رو به صورت جدول در اختیارت قرار میده.

Dim DataSet As New DataSet
Dim FileName As String = ""
DataSet.ReadXml(FileName)
DataSet.WriteXml(FileName)

Alirezanet
سه شنبه 14 آذر 1391, 02:48 صبح
یه راه خیلی ساده و جالب هم برای کار با xml وجود داره
اونم استفاده از دیتا ست هست.
دیتا ست خودش یه تابع داره که اطلاعات فایل xml رو به صورت جدول در اختیارت قرار میده.

Dim DataSet As New DataSet
Dim FileName As String = ""
DataSet.ReadXml(FileName)
DataSet.WriteXml(FileName)


ممنون ولی این روش بیشتر جزئی از امکانات دیتاست هست ! بخوای xml یاد نگیری خوبه :)

asghar2008
سه شنبه 14 آذر 1391, 11:51 صبح
سلام به دوستان

از آقای Alirezanet بخاطر تمای پست های مفید شون تشکر میکنم.

ممنون میشم یک آموزش ساده xml در VB.Net به صورت Pdf اینجا قرار بدین. من کتاب دیتل رو خوندم فصل 15 و 19 در مورد Xml هست اما گنگ ترجمه شده . یعنی من متوجه نشدم!

آقای Alirezanet ممنون میشم شما این پست هارو جمع بندی کنید تا دوستان مبتدی نیز استفاده کنند.

با تشکر

Hossis
سه شنبه 14 آذر 1391, 23:06 عصر
شما میتونید با استفاده از همون علامت <%=> این کار رو انجام بدید ! فقط باید هر قسمت رو جدا بنویسید و به همدیگه اضافشون کنید !
مثال:
Dim xml = <element>

</element>

For i = 0 To 10
xml.Element(0).Add(<testElement><%= i %></testElement>)
Next
اینجا یک element ساخته شده و به اون با یک For حدود 11 TestElement بهش اضافه شده !
در اینجا مهم فقط اینه که بتونید یک Query خوب بنویسید و به اون Element مورد نظر مقدار هاتون رو اضافه کنید !
من این کد رو اجرا کردم و بابت این زحمات هم تشکر وافر می کنم
در حین اجرای کد, این مسئله برای من پیش اومد که اگر بخواهیم نام اصلی هر عنصر و المنت رو هم تغییر بدیم , راهش چیه؟ (testelement) در مثال
البته من تونستم اولش رو تغییر بدم ولی آخرش که با / بسته می شه رو هر کار کردم نتونستم
ممنون می شم اگر این رو هم تست و اضافه کنید
مثال
xml.Element(0).Add(<Nod<%= i %>><%= i %></Nod<%= i %>>)

Alirezanet
چهارشنبه 15 آذر 1391, 10:38 صبح
سلام به دوستان

از آقای Alirezanet بخاطر تمای پست های مفید شون تشکر میکنم.

ممنون میشم یک آموزش ساده xml در VB.Net به صورت Pdf اینجا قرار بدین. من کتاب دیتل رو خوندم فصل 15 و 19 در مورد Xml هست اما گنگ ترجمه شده . یعنی من متوجه نشدم!

آقای Alirezanet ممنون میشم شما این پست هارو جمع بندی کنید تا دوستان مبتدی نیز استفاده کنند.

با تشکر

سلام
حتما در اولین فرصت به نوشتن مقاله ای در این زمینه میپردازم ! ولی متاسفانه فعلا وقت کافی ندارم.
ولی مشکلی بود بپرسید تا آماده شدن مقاله کمکتون میکنم .
موفق باشید


من این کد رو اجرا کردم و بابت این زحمات هم تشکر وافر می کنم
در حین اجرای کد, این مسئله برای من پیش اومد که اگر بخواهیم نام اصلی هر عنصر و المنت رو هم تغییر بدیم , راهش چیه؟ (testelement) در مثال
البته من تونستم اولش رو تغییر بدم ولی آخرش که با / بسته می شه رو هر کار کردم نتونستم
ممنون می شم اگر این رو هم تست و اضافه کنید
مثال
xml.Element(0).Add(<Nod<%= i %>><%= i %></Nod<%= i %>>)

سلام
خوب اگه صرفا یک element خلی بدون attribute و Child بخواید اضافه کنید میتونید به این شکل بنویسید :
Dim myxml = <RootElement>
<%= New XElement(XName.Get("TestElement")) %>
</RootElement>
ولی اگه لازم باشه که Element شما زیر مجموعه های دیگه ای هم داشته باشه و یا Attribute های دیگه ای داشته باشه باید هر Element رو از پایین ترین سطح به صورت جداگونه خارج از بلاک اصلی xml بنویسید و یکی یکی به هم دیگه اضافشون کنید .
مثال :
Dim Element2 = <Element2>
<ChildElement2 attribute="value1">
</ChildElement2>
</Element2>


Dim Element1 = <Element1>
<ChildElement1>
<%= Element2 %>
</ChildElement1>
</Element1>


Dim myxml = <RootElement>
<%= Element1 %>
</RootElement>


نتیجه :
<RootElement>
<Element1>
<ChildElement1>
<Element2>
<ChildElement2 attribute="value1"></ChildElement2>
</Element2>
</ChildElement1>
</Element1>
</RootElement>

فکر میکنم شما میخواستید همین کار رو کنید و نمیشد .
امیدوارم تونسته باشم کمک کنم . اگه باز مشکلی بود در خدمتم.
موفق باشید

Alirezanet
چهارشنبه 15 آذر 1391, 22:39 عصر
یه موضوع رو هم فراموش کردم بگم !
با تلفیق 2 روش قبل میشه کدهارو بهطور مثال به این شکل نوشت : یعنی در content هر element میشه یکی دیگه اضافه کرد :

Dim myxml = <RootElement>
<%= New XElement(XName.Get("Element1"), _
New XElement(XName.Get("Element2"), _
<Element3 attribute3='value3'>ContentElement3</Element3>)) %>
</RootElement>

نتیجه :
<RootElement>
<Element1>
<Element2>
<Element3 attribute3="value3">ContentElement3</Element3>
</Element2>
</Element1>
</RootElement>