PDA

View Full Version : سوال: استفاده از بانک XML



amir200h
پنج شنبه 17 تیر 1389, 18:36 عصر
سلام به همه ی دوستان.
به یه مشکلی برخوردم
می خوام از بانک XML در برنامه هام استفاده کنم
تو فایل ضمیمه یک بانک XML است که می خوام
در 4 لیبل قسمت های زیر را نمایش بده


<M1>نشان دادن در لیبل 1</M1>

<M2>- نشان دادن در لیبل 2</M2>

<M3> نشان دادن در لیبل 3</M3>

<M4>- نشان دادن در لیبل 4</M4>

اگه کسی بلده کمکم کنه
ممنونم
یا حق

parselearn
پنج شنبه 17 تیر 1389, 18:58 عصر
http://barnamenevis.org/forum/showthread.php?t=230075&highlight=rss

amir200h
پنج شنبه 17 تیر 1389, 19:08 عصر
اینو قبلا دیدم به نتیجه نرسیدم
اگه میشه بیشتر کمک کنید.
شما یه نگاه به فایل بنداز و اگه می شه یه نمونه کد بزار.
ممنونم.
یا حق

parselearn
پنج شنبه 17 تیر 1389, 20:03 عصر
اينجا آيتمها اين طوري هستند
purepoem1
purepoem2
purepoem3
...

ابتدا تعداد purepoem رو بدست مياريم سپس لود ميكنيم




Dim c As Long, i As Long

Private Sub LoadXML(item As String)
On Error Resume Next
Set rss = CreateObject("msxml2.domdocument")
rss.async = False
rss.Load (App.Path & "\purepoem.xml")
Set myItem = rss.getElementsByTagName(item)

Label1.Caption = "-"
Label2.Caption = "-"
Label3.Caption = "-"
Label4.Caption = "-"

Label1.Caption = myItem(0).getElementsByTagName("M1").item(0).firstChild.nodeValue
Label2.Caption = myItem(0).getElementsByTagName("M2").item(0).firstChild.nodeValue
Label3.Caption = myItem(0).getElementsByTagName("M3").item(0).firstChild.nodeValue
Label4.Caption = myItem(0).getElementsByTagName("M4").item(0).firstChild.nodeValue

End Sub

Private Sub Form_Load()
Dim f As Integer
Dim tmp As String

f = FreeFile
Open App.Path & "\purepoem.xml" For Input As #f
tmp = Input(LOF(f), #f)
Close #f

i = 1
c = 0

While (i <> 0)
c = c + 1
i = InStr(1, tmp, "purepoem" & c)
List1.AddItem "purepoem" & c
Wend

List1.RemoveItem List1.ListCount - 1

End Sub

Private Sub List1_Click()
LoadXML List1.List(List1.ListIndex)
End Sub

amir200h
پنج شنبه 17 تیر 1389, 20:37 عصر
سلام دوست من.
با تشکر از parselearn (http://barnamenevis.org/forum/member.php?u=48732) عزیز.
لطف می کنی این کدی رو که گذاشتی توضیح بدی؟
یه سوال دیگه هم داشتم اگه بخوام به صورا تصادفی یکی از این از اشعار انتخاب بشه باید چیکار کنم؟
اگر هم بخوام درون یک تکست باکس متن رو نشون بده باید چیکار کنم.
ممنون می شم اگه راهنماییم کنید.
ممنونم.
یا حق

parselearn
جمعه 18 تیر 1389, 00:06 صبح
توضيح كد LoadXML
http://barnamenevis.org/forum/showthread.php?t=197467&highlight=rss


اين قسمت


While (i <> 0)
c = c + 1
i = InStr(1, tmp, "purepoem" & c)
List1.AddItem "purepoem" & c
Wend
ميخوايم بفهميم كه چه تعداد purepoem در اين فايل هست
تعدا آيتمها رو بدست بياريم
تابع InStr جستجو ميكنه در صورتي كه باشه موقعيت ميده در غير اين صورت 0 . شرط وايل هم اينه كه i تا زماني كه 0 نشده ادامه بده


براي تصادفي هم از تابع رندوم كمك ميگيريم

LoadXML "purepoem" & CStr(Rnd(1 * (c - 1)))


مسلما به جاي Labelها نام Textbox رو ميزاريم

amir200h
جمعه 18 تیر 1389, 10:29 صبح
واقعا ممنونم
این کد رندوم رو من هرکاری کردم جواب نداد عزیز. تو کجای کد باید بزارم؟
با عرض معذرت یه سوال دیگه هم داشتم.
تو این کدهایی که زحمت کشیدی گذاشتی درون لیست باکس قسمت
purepoem1
purepoem2
purepoem3
و...
را نشون میده.
من می خوام قسمت title رو در لیست باکس نشون بده
یه نمونه بانک هم تو ضمیمه گذاشتم
ممنون اگه کمکم کنی. این دیگه آخرین سوالمه.
ممنونم
یا حق

parselearn
جمعه 18 تیر 1389, 11:53 صبح
تابع رندم رو به اين تغيير بديد


Randomize Timer
LoadXML "purepoem" & CStr(CInt(Rnd * (c - 1)))

parselearn
یک شنبه 20 تیر 1389, 16:38 عصر
دوست عزيز
اين فايل همانند فايل قبلي هست
و فقط شما بايد نام تگها رو عوض كنيد
(آدرس فايل بايد تغيير كند)

bssl به جاي purepoem

i = InStr(1, tmp, "bssl" & c)title به جاي M1


Label1.Caption = myItem(0).getElementsByTagName("title").item(0).firstChild.nodeValue
Text1.Text = myItem(0).getElementsByTagName("post").item(0).firstChild.nodeValue

amir200h
یک شنبه 20 تیر 1389, 18:47 عصر
سلام دوست من.
ممنونم از کمکت ولی جواب نداد. به این عکس نگاه کن
http://barnamenevis.org/forum/attachment.php?attachmentid=52712&stc=1&d=1279397703
الان با کمکی که بهم کردی فایل رو مثل شماره 1 لود می کنم
ولی می خوام مثل شماره 2 لود بشه
بازم ممنون به خاطر راهنمایی هات.
یا حق

parselearn
یک شنبه 20 تیر 1389, 23:25 عصر
هيچ فرقي نمي كنه


Private Function LoadXMLT(item As String) As String
On Error Resume Next
Set rss = CreateObject("msxml2.domdocument")
rss.async = False
rss.Load (App.Path & "\bssl.xml")
Set myItem = rss.getElementsByTagName(item)
LoadXMLT = myItem(0).getElementsByTagName("title").item(0).firstChild.nodeValue
End Function


For i = 0 To List1.ListCount - 1
List2.AddItem LoadXMLT(List1.List(i))
Next i