نمایش محتویات گره های XML بصورت تصادفی

#C

توسط thearrow در 7 سال پیش
0 19.1k 2 7 سال پیش
thearrow reza
0

سلام
سی شارپ
چند سوال دارم راجع به 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 نشون بده
یا مثلا وقتی بگه سلام مثله اون جواب بده

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

0

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

<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>

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

[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]
0

ممنون واقعا ممنون

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

آخرین ویرایش: 25-04-2013 ساعت 22:12، توسط The Arrow

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.