الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في ملفات XML

بدأه blade88 في 14 يوليو 2010 · 5 رد · 575 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الســـــــــلام عليكم

لدي مشكلة في التعامل مع ملف XML

المشكلة هي عدم القدرة على اجراء تغييرات في قيم العقد وحفظ هذه التغييرات في الملف بعد اجرائها على الرغم من صحة الكود

لدي ملف xml التالي عبارة عن ملف لعمل نظام تصويت

<?xml version="1.0"?>
 <poll>
    <question>ما هي لغة البرمجة المفضلة لديك ؟</question>
	<answers>
	    <answer>
	        <value>C++</value>
	        <number>22</number>
	    </answer>
	    <answer>
	        <value>C#</value>
	        <number>8</number>
	    </answer>
	    <answer>
	        <value>Java</value>
	        <number>55</number>
	    </answer>
	    <answer>
	        <value>PHP</value>
	        <number>20</number>
	    </answer>
	</answers>
 </poll>


قمت باستخدام الكود التالي لاجراء تعديل على قيمة العقدة لكن المشكلة عدم القدرة على حفـــظ هذا التعديل في الملف
الكود المستخدم :

if(file_exists("poll.xml"))
{

    $xml=simplexml_load_file("poll.xml") or die("cannot create object");

    $answers=$xml->answers;
    $answer1=$answers->answer[0];
    $answer1->number += 2;

    $xml->saveXML();



}
else
{
    exit("Failed to open test.xml.");
}

لماذا أحصل على خطأ عند استخدام الدالة    createElemet نص الخطأ هو غير قادر على التعرف على الدلة علما  أني استخدمتها ضمن الكود السابق وحصلت على الخطأ

------------- مع جزيل الشـــكر --------------------

تم تعديل هذه المشاركة بواسطة blade88 في 14 يوليو 2010 في 22:15

#2

انت نسيت فقط ان تكتب اسم الملف فى أمر الحفظ حاول انت تجربه هكذا

if(file_exists("poll.xml"))
	{

		$xml=simplexml_load_file("poll.xml") or die("cannot create object");

		$answers=$xml->answers;
		$answer1=$answers->answer[0];
		$answer1->number += 2;

		$xml->saveXML('poll.xml');
	}
	else
	{
		exit("Failed to open test.xml.");
	}

تم تعديل هذه المشاركة بواسطة smartphp في 15 يوليو 2010 في 00:15

#3
smartphp كتب:

انت نسيت فقط ان تكتب اسم الملف فى أمر الحفظ حاول انت تجربه هكذا

if(file_exists("poll.xml"))
	{

		$xml=simplexml_load_file("poll.xml") or die("cannot create object");

		$answers=$xml->answers;
		$answer1=$answers->answer[0];
		$answer1->number += 2;

		$xml->saveXML('poll.xml');
	}
	else
	{
		exit("Failed to open test.xml.");
	}

شكرا لك أخي العزيز نجح الأمر فيما يخص حفظ التعديلات داخل الملف لكن لدي مشكلة أخرى وهي عدم القدرة على التعرف على

الدالة createElement

من أجل انشاء عقدة جديدة حيث نص الخطأ

Fatal error: Call to undefined method SimpleXMLElement::createElement() in C:\wamp\www\\addpool.php on line 55

مع جزيل الشكــر أخي العزيز

#4

السلام عليكم ورحمة الله

blade88 كتب:

شكرا لك أخي العزيز نجح الأمر فيما يخص حفظ التعديلات داخل الملف لكن لدي مشكلة أخرى وهي عدم القدرة على التعرف على

الدالة createElement

من أجل انشاء عقدة جديدة حيث نص الخطأ

Fatal error: Call to undefined method SimpleXMLElement::createElement() in C:\wamp\www\\addpool.php on line 55

مع جزيل الشكــر أخي العزيز

لا يوجد دالة اسمها createElement في الصنف SimpleXMLElement على حد علمي

يمكنك استخدام الدالة AddChild() للإضافة

هكذا مثلاً :


$xml = new SimpleXMLElement("<?xml version="1.0"?>");
$xmladd = $xml->addChild('answers');
$xmlans = $xmladd->addChild('answer');
$xmlans->addChild('value','C');
$xmlans->addChild('number','10');

بتوفيق الله ..

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 15 يوليو 2010 في 02:39

1

Everything will be fine when we TALK LESS, DO MORE


#5
MoHaMMaD Pro كتب:

السلام عليكم ورحمة الله

لا يوجد دالة اسمها createElement في الصنف SimpleXMLElement على حد علمي

يمكنك استخدام الدالة AddChild() للإضافة

هكذا مثلاً :


$xml = new SimpleXMLElement("<?xml version="1.0"?>");
$xmladd = $xml->addChild('answers');
$xmlans = $xmladd->addChild('answer');
$xmlans->addChild('value','C');
$xmlans->addChild('number','10');

بتوفيق الله ..

شكراً لك أخ محمد

نجح الأمر باستخدام الدالة () addChild ,.

سؤال اخر لو سمحت : كيف يمكن حذف عقدة أو استبدال عقدة بعقدة أخرى ؟ ؟ ؟ ؟

------------------------------- مع جزيل الشـــكر ----------------------------------

تم تعديل هذه المشاركة بواسطة blade88 في 15 يوليو 2010 في 16:31

#6

جرب الدالة unset لحذف العقد كالتالي مثلا :

unset($xml –> answers –> answer –> value);

إن لم ينجح أخبرني بذلك

طبعا تضع الأمر unset بداخل شرط معين للوصول إلى عقدة معينة

بالنسبة للتعديل على العقد لست متأكد ولكن على حد علمي بواسطة الصنف DomDocument يمكنك ذلك والله أعلم

بالتوفيق

1

Everything will be fine when we TALK LESS, DO MORE


مواضيع مشابهة