استخدم simplexml لمعالجة بيانات atom. تستخدم العديد من المدونات atom لإخراج البيانات، لكن atom تستخدم مساحة الاسم، لذلك يجب عليك الآن تحديد معرف المورد الموحد لمساحة الاسم (URI) عند طلب العناصر المسماة والأسماء المحلية. هناك نقطة أخرى وهي أن طريقة xpath لـ simplexml لا يمكنها ذلك الاستعلام مباشرة عن شجرة XML هذه.
بدءًا من PHP الإصدار 5.1، يمكن لـ SimpleXML استخدام استعلامات XPath مباشرة على مستندات مساحة الاسم. كالعادة، يجب أن تستخدم مسارات موقع XPath بادئة مساحة الاسم، حتى إذا كان المستند الذي يتم البحث عنه يستخدم مساحة الاسم الافتراضية. تقوم وظيفة RegisterXPathNamespace() بربط البادئة بعنوان URL لمساحة الاسم المستخدم في الاستعلامات اللاحقة.
ما يلي هو مثال لاستخدام xpath للاستعلام عن عنصر العنوان لمستند الذرة:
نص عادي
شفرة:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('atom','http://www.w3.org/2005/Atom');
$titles = $atom->xpath('//atom:title');
foreach(عناوين $ كعنوان $)
صدى"<h2>".$title ."</h2>";
استخدم simplexml لمعالجة بيانات RSS
يمكن لـ Wordpress إخراج مصادر بيانات rss2، وهناك أيضًا بعض مساحات الأسماء المختلفة، مثل dc. مثال على استخدام simplexml لتحليل rss2:
نص عادي
PHP:
$ns=صفيف(
'content'=>'http://purl.org/rss/1.0/modules/content/',
'wfw'=>'http://wellformedweb.org/CommentAPI/',
'dc'=>'http://purl.org/dc/elements/1.1/'
);
$articles=array();
// الخطوة 1: الحصول على التغذية
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
// الخطوة 2: الحصول على البيانات الوصفية للقناة
$channel=array();
$channel['title'] =$xml->channel->title;
$channel['link'] =$xml->channel->link;
$channel['description']=$xml->channel->description;
$channel['pubDate'] =$xml->pubDate;
$channel['timestamp'] =strtotime($xml->pubDate);
$channel['generator'] =$xml->generator;
$channel['language'] =$xml->language;
// الخطوة 3: الحصول على المقالات
foreach($xml->قناة->itemas$item){
$article=array();
$article['channel']=$blog;
$article['title']=$item->title;
$article['link']=$item->link;
$article['comments']=$item->comments;
$article['pubDate']=$item->pubDate;
$article['timestamp']=strtotime($item->pubDate);
$article['description']=(string)trim($item->description);
$article['isPermaLink']=$item->guid['isPermaLink'];
// احصل على البيانات الموجودة في مساحات الأسماء
$content=$item->children($ns['content']);
$dc =$item->children($ns['dc']);
$wfw =$item->children($ns['wfw']);
$article['creator']=(string)$dc->creator;
foreach($dc->الموضوع كموضوع$)
$article['subject'][]=(string)$subject;
$article['content']=(string)trim($content->encoded);
$article['commentRss']=$wfw->commentRss;
// أضف هذه المقالة إلى القائمة
$articles[$article['timestamp']]=$article;
}
في هذا المثال، استخدم الأسلوب الأطفال للحصول على البيانات في مساحة الاسم:
نص عادي
PHP:
$dc =$item->children($ns['dc']);