ใช้ simplexml เพื่อประมวลผลข้อมูลอะตอม บล็อกจำนวนมากใช้อะตอมเพื่อส่งออกข้อมูล แต่อะตอมใช้เนมสเปซ ดังนั้นตอนนี้คุณต้องระบุตัวระบุทรัพยากรเนมสเปซ (URI) เมื่อร้องขอองค์ประกอบที่มีชื่อและชื่อในเครื่อง อีกจุดหนึ่งคือวิธี xpath ของ simplexml ไม่สามารถทำได้ สอบถามแผนผัง xml นี้โดยตรง
ตั้งแต่ PHP เวอร์ชัน 5.1 เป็นต้นไป SimpleXML สามารถใช้แบบสอบถาม XPath ได้โดยตรงบนเอกสารเนมสเปซ ตามปกติ เส้นทางตำแหน่ง XPath ต้องใช้คำนำหน้าเนมสเปซ แม้ว่าเอกสารที่กำลังค้นหาจะใช้เนมสเปซเริ่มต้นก็ตาม ฟังก์ชัน registerXPathNamespace() เชื่อมโยงคำนำหน้ากับ URL เนมสเปซที่ใช้ในการสืบค้นครั้งต่อไป
ต่อไปนี้เป็นตัวอย่างของการใช้ xpath เพื่อสอบถามองค์ประกอบหัวเรื่องของเอกสารอะตอม:
PLAIN TEXT
รหัส:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('อะตอม','http://www.w3.org/2005/Atom');
$titles = $atom->xpath('//atom:title');
foreach($ชื่อเป็น $title)
echo"<h2>". $title "</h2>";
ใช้ simplexml เพื่อประมวลผลข้อมูล RSS
Wordpress สามารถส่งออกแหล่งข้อมูล rss2 ได้ และยังมีเนมสเปซที่แตกต่างกัน เช่น dc ตัวอย่างของการใช้ simplexml เพื่อแยกวิเคราะห์ rss2:
ข้อความธรรมดา
PHP:
$ns=อาร์เรย์(
'เนื้อหา'=>'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['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;
$ช่อง['ภาษา'] =$xml->ภาษา;
// ขั้นตอนที่ 3: รับบทความ
foreach($xml->ช่อง->รายการ$รายการ){
$บทความ=อาร์เรย์();
$article['channel']=$blog;
$article['title']=$item->title;
$article['link']=$item->link;
$article['comments']=$item->ความคิดเห็น;
$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->เด็ก($ns['dc']);
$wfw =$item->เด็ก($ns['wfw']);
$article['creator']=(string)$dc->creator;
foreach($dc-> subjectas$ เรื่อง)
$article['subject'][]=(string)$subject;
$article['content']=(string)trim($content->encoded);
$article['commentRss']=$wfw->commentRss;
// เพิ่มบทความนี้เข้าในรายการ
$articles[$article['timestamp']]=$article;
-
ในตัวอย่างนี้ ใช้วิธีการลูกเพื่อรับข้อมูลในเนมสเปซ:
PLAIN TEXT
PHP:
$dc =$item->เด็ก($ns['dc']);