نمایش محتویات گره های XML بصورت تصادفی
#1
Note 
سلام
سی شارپ
چند سوال دارم راجع به XML و خواندن اون توسط برنامه :
فرض کنید یک فایل setting.xml داریم و این گره ها در فایل وجود دارند :

کد:
<?xml version="1.0"?>

<setting>

<pm>
<question></question>
<answer>
        <random>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </random>
</answer>
</pm>

<pm>
<question></question>
<answer></answer>
</pm>

<pm>
<question></question>
<answer></answer>
</pm>

</setting>

اول چطوری این رو توی برنامه Load کنم دوم اینکه چطوری باید به برنامه فهموند که هر سوال و جواب بینه
کد:
<pm></pm>
قرار داره و هر سوال با
کد:
<question>
شروع و با
کد:
</question>
تمام میشه و جواب ها هم به همین صورت.
در واقع با استفاده از
کد:
</pm>
سوال و جواب ها جدا بشند
و اگه پاسخ سوالات ار این دستور در اونها استفاده شده بود :

کد:
        <random>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </random>

هر li یک پاسخ به حساب بیاد و حتی کاربر بتونه به پاسخ ها اضافه کنه

، و این خاصیت که کاربر هم بتونه گره ها رو اضافه کنه ( یعنی اینکه بتونه
کد:
<pm><question></question><answer></answer></pm>
و حتی random هم اضافه کنه

و حساسیت به کوچک و بزرگ بودن هم نداشته باشه
_____________
روی فرم یک TextBox1 و یک Btn و یک LBL وجود داره
مثلا
الان فکر کنید که فایل XML ما این محتویات رو داره
کد:
<?xml version="1.0"?>

<setting>

<pm>
<question>hi</question>
<answer>
        <random>
            <li>hi</li>
            <li>hello</li>
            <li>salam</li>
            <li>slm</li>
            <li>hi there</li>
        </random>
</answer>
</pm>

<pm>
<question>سلام</question>
<answer>سلام خوبی؟</answer>
</pm>
</setting>

حالا اگه کاربر توی تکست باکس بنویسه hi و هر بار روی BTN بزنه ، به صورت Random یکی رو انتخاب و توی Lbl نشون بده
یا مثلا وقتی بگه سلام مثله اون جواب بده


اگه مجانی نمیشه لطفا بگید چقدر هزینه داره که کمکم کنید؟
ممنون

پاسخ
#2
Note 
سلام
برای اینکه یکم بهتر بشه ساختار فایل XML رو اینطوری میکنیم:

[HTML]<Main>
<QA>
<question>What is your favorite color?</question>
<answer>Blue</answer>
<answer>Red</answer>
<answer>Green</answer>
<answer>Yellow</answer>
</QA>

<QA>
<question>What is your favorite programming language?</question>
<answer>C#</answer>
<answer>Java</answer>
<answer>Pascal</answer>
<answer>C++</answer>
<answer>Delphi</answer>
<answer>VB.Net</answer>
</QA>
</Main>
[/HTML]

نیازی نیست نود اضافی بذاریم اگه نود یکی بود همیشه جواب یکیه از بیشتر بود یکیش بصورت تصادفی انتخاب میشه.

[CSHARP]using System.Linq;
using System.Xml.Linq;[/CSHARP]

[CSHARP] XmlDocument xml = new XmlDocument();
xml.Load("QA.xml");

XmlNodeList xList = xml.SelectNodes("Main/QA");
foreach (XmlNode xn in xList)
{
string Question = xn["question"].InnerText;
if (Question == txtQ.Text)
{
XmlNodeList answerlist = xn.SelectNodes("./answer");
foreach (XmlNode ans in answerlist
.Cast<XmlNode>()
.OrderBy(elem =>Guid.NewGuid()))
{
txtA.Text = ans.InnerText;
}
}
}[/CSHARP]

پاسخ
#3
Note 
ممنون واقعا ممنون

فقط اگه میشه پروژه به صورتی که گفتم بگذاربد ( یعنی حالا اگه کاربر توی تکست باکس بنویسه hi و هر بار روی BTN بزنه ، به صورت Random یکی رو انتخاب و توی Lbl نشون بده )

آخرین ویرایش: 25-04-2013 ساعت 22:12، توسط The Arrow
پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note سی شارپ:: تولید اعداد تصادفی با کاراکترهای داده شده xMAN 0 375 09-09-2013 ساعت 15:05
آخرین ارسال: xMAN
Note کد تبدیل تصاویر به زبان سی شارپ SOFTAFZAR 0 398 28-01-2013 ساعت 12:42
آخرین ارسال: SOFTAFZAR
Note ایجاد کنترل در زمان اجرا و اختصاص رویداد برای انها SOFTAFZAR 0 403 07-12-2012 ساعت 17:04
آخرین ارسال: SOFTAFZAR
Note مشکل در اتصال به دیتابیس Mysql V!per 5 826 30-11-2012 ساعت 11:53
آخرین ارسال: SOFTAFZAR
Note بررسی اتصال به اینترنت SOFTAFZAR 0 424 09-11-2012 ساعت 22:12
آخرین ارسال: SOFTAFZAR
Note کد برش تصاویر در سی شارپ SOFTAFZAR 0 524 28-10-2012 ساعت 16:31
آخرین ارسال: SOFTAFZAR
Note کد ایجاد یک نام تصادفی برای فایل در سی شارپ SOFTAFZAR 0 408 28-10-2012 ساعت 16:01
آخرین ارسال: SOFTAFZAR
Note تولید اعداد تصادفی در سی شارپ؟ @EchO 1 1,804 17-09-2012 ساعت 16:00
آخرین ارسال: SOFTAFZAR

کاربرانِ درحال بازدید از این موضوع:   1 مهمان