เข้าถึงข้อมูล XML ด้วย XPath ผ่าน simplexml

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

chbbk
PHP VIP Members
PHP VIP Members
Posts: 2971
Joined: 08/09/2014 10:34 am

เข้าถึงข้อมูล XML ด้วย XPath ผ่าน simplexml

Post by chbbk »

SimpleXML เป็นฟังชั่นจัดการกับXML มีให้ใช้ตั้งแต่ PHP 5 ขึ้นไปค่ะ
ตัวฟังชั่นนี้จะทำการโหลดข้อมูลXMLมาเป็น object ให้เราใช้งาน

รูปแบบก็จะประมาณนี้
$xml = simplexml_load_file('ชื่อไฟล์XML');
ใช้ XML นี้ประกอบนะคะ

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>
</bookstore>

Code: Select all

<?php
$xml = simplexml_load_file('books.xml'); //โหลด xml มาเป็น object

//ใช้ xpath ชี้ตำแหน่งข้อมูลที่เราต้องการ ในตัวอย่างนี้จะเลือก book ที่มี category=WEB มาแสดงค่ะ
$title = $xml->xpath("/bookstore/book[@category='WEB']/title");
$author=$xml->xpath("/bookstore/book[@category='WEB']/author");
$year = $xml->xpath("/bookstore/book[@category='WEB']/year");
$price = $xml->xpath("/bookstore/book[@category='WEB']/price");

$count = count($title);  //นับจำนวนหนังสือ(สำหรับจัดรูปแบบเพื่อความสวยงามค่ะไม่มีอะไรมาก)
$i=0;
foreach($title as $titles) // ใช้ foreach โหลดข้อมูลออก
{
  $tt[$i] = $titles;
  $i++;	
}
$i=0;
foreach($author as $authors)
{
  $au[$i] = $authors;
  $i++;	
}
$i=0;
foreach($year as $years)
{
  $y[$i] = $years;
  $i++;	
}
$i=0;
foreach($price as $prices)
{
  $p[$i] = $prices;
  $i++;	
}
//ส่วนนี้	เพื่อความสวยงามอย่างเดียวค่ะ อิอิ ^^
for($i=0;$i<$count;$i++)
{
	echo "TITLE : "."$tt[$i]"."<BR>";
	echo "AUTHOR : "."$au[$i]"."<BR>";
	echo "YEARS : "."$y[$i]"."<BR>";
	echo "PRICE : "."$p[$i]"."<BR>";
	echo "###############################"."<BR>";
}
จะได้ออกมาแบบนี้ค่ะ ^^
yy.jpg
yy.jpg (34.46 KiB) Viewed 824 times
Trust me, I'm a Programmer


Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 6 guests