سؤال

هل من الممكن استخدام وظائف SimpleXML الخاصة بـ PHP لإنشاء كائن XML من البداية؟من خلال البحث في قائمة الوظائف، هناك طرق لاستيراد سلسلة XML موجودة إلى كائن يمكنك معالجته بعد ذلك، ولكن إذا كنت أرغب فقط في إنشاء كائن XML برمجيًا من البداية، فما هي أفضل طريقة للقيام بذلك؟

لقد اكتشفت أنه يمكنك استخدام simplexml_load_string() وتمرير السلسلة الجذرية التي تريدها، وبعد ذلك يكون لديك كائن يمكنك معالجته عن طريق إضافة أطفال...على الرغم من أن هذا يبدو وكأنه نوع من الاختراق، حيث أنه يتعين علي فعليًا تشفير بعض ملفات XML في السلسلة قبل أن يتم تحميلها.

لقد فعلت ذلك باستخدام وظائف مستند DOM, ، على الرغم من أن الأمر مربك بعض الشيء لأنني لست متأكدًا من علاقة DOM بإنشاء مستند XML خالص ...لذلك ربما يكون اسمه سيئًا :-)

هل كانت مفيدة؟

المحلول

بالطبع تستطيع.على سبيل المثال.

<?php
$newsXML = new SimpleXMLElement("<news></news>");
$newsXML->addAttribute('newsPagePrefix', 'value goes here');
$newsIntro = $newsXML->addChild('content');
$newsIntro->addAttribute('type', 'latest');
Header('Content-type: text/xml');
echo $newsXML->asXML();
?>

انتاج |

<?xml version="1.0"?>
<news newsPagePrefix="value goes here">
    <content type="latest"/>
</news>

استمتع.

نصائح أخرى

في PHP5، يجب عليك استخدام طراز كائن المستند الطبقة بدلا من ذلك.مثال:

$domDoc = new DOMDocument;
$rootElt = $domDoc->createElement('root');
$rootNode = $domDoc->appendChild($rootElt);

$subElt = $domDoc->createElement('foo');
$attr = $domDoc->createAttribute('ah');
$attrVal = $domDoc->createTextNode('OK');
$attr->appendChild($attrVal);
$subElt->appendChild($attr);
$subNode = $rootNode->appendChild($subElt);

$textNode = $domDoc->createTextNode('Wow, it works!');
$subNode->appendChild($textNode);

echo htmlentities($domDoc->saveXML());

يرجى الاطلاع على إجابتي هنا.مثل Dreamwerx.myopenid.com ويشير إلى أنه من الممكن القيام بذلك مع SimpleXML, ، لكن ال امتداد دوم ستكون الطريقة الأفضل والأكثر مرونة.بالإضافة إلى ذلك هناك طريقة ثالثة:استخدام XMLWriter.إنه أكثر سهولة في الاستخدام من DOM، وبالتالي فهو طريقتي المفضلة لكتابة مستندات XML من البداية.

$w=new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("root");
    $w->writeAttribute("ah", "OK");
    $w->text('Wow, it works!');
$w->endElement();
echo htmlentities($w->outputMemory(true));

بالمناسبة: DOM تمثل دوثيقة ياكائن مأوديل؛هذه هي واجهة برمجة التطبيقات الموحدة في مستندات XML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top