บทช่วยสอน PHP XML: สร้าง แยกวิเคราะห์ อ่านพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
PHP และ XML ทำงานร่วมกันเพื่อจัดโครงสร้าง จัดเก็บ และแลกเปลี่ยนข้อมูลระหว่างระบบ คู่มือนี้จะอธิบาย XML, DOM และตัวแยกวิเคราะห์ XML จากนั้นจะแสดงวิธีการอ่านเอกสาร XML ด้วย SimpleXML และวิธีการสร้างเอกสาร XML ด้วยคลาส DOMDocument โดยจะจบลงด้วยวิธีการใช้งานแต่ละอย่างในสถานการณ์ต่างๆ

XML คืออะไร?
XML เป็นตัวย่อสำหรับ Extensible Markup Language
XML ใช้สำหรับจัดโครงสร้าง จัดเก็บ และส่งต่อข้อมูลจากระบบหนึ่งไปยังอีกระบบหนึ่ง
XML มีลักษณะคล้ายกับ HTML โดยใช้แท็กเปิดและแท็กปิด แต่ต่างจาก HTML ตรงที่ XML อนุญาตให้ผู้ใช้กำหนดแท็กของตนเองได้
DOM คืออะไร?
DOM เป็นตัวย่อสำหรับ Document Object Model
เป็นมาตรฐานที่ใช้งานได้บนหลายแพลตฟอร์มและไม่ขึ้นกับภาษา ซึ่งกำหนดวิธีการเข้าถึงและจัดการข้อมูลใน:
- HTML
- XHTML
- XML
DOM XML ใช้เพื่อเข้าถึงและจัดการเอกสาร XML มัน ดูเอกสาร XML ในลักษณะโครงสร้างแบบต้นไม้
ตัวแยกวิเคราะห์ XML
โปรแกรมแยกวิเคราะห์ XML คือโปรแกรมที่แปลงเอกสาร XML ให้เป็นอ็อบเจ็กต์ XML Document Object Model (DOM)
จากนั้นจึงสามารถจัดการออบเจ็กต์ XML DOM ได้โดยใช้ Javaสคริปต์ PythonPHP และภาษาอื่นๆ
คำสำคัญ CDATA ซึ่งเป็นคำย่อของ (unparsed) Character Data ใช้เพื่อละเว้นอักขระพิเศษ เช่น “<” และ “>” เมื่อทำการแยกวิเคราะห์เอกสาร XML
เหตุใดจึงต้องใช้ XML
- เว็บเซอร์วิส เช่น SOAP และ REST ใช้รูปแบบ XML ในการแลกเปลี่ยนข้อมูล การเรียนรู้ว่า XML คืออะไรและทำงานอย่างไร จะทำให้คุณได้เปรียบในการแข่งขันในฐานะนักพัฒนา เนื่องจากแอปพลิเคชันสมัยใหม่ใช้บริการเว็บอย่างมาก
- เอกสาร XML สามารถใช้เพื่อจัดเก็บการตั้งค่าต่างๆ ของแอปพลิเคชันได้
- มันช่วยให้คุณสร้างแท็กแบบกำหนดเองได้ ซึ่งทำให้มีความยืดหยุ่นมากขึ้น
ตัวอย่างเอกสาร XML
สมมติว่าคุณกำลังพัฒนา...ping แอปพลิเคชันที่ดึงข้อมูลจากเว็บเซอร์วิสในรูปแบบ XML
ด้านล่างนี้คือตัวอย่างลักษณะของเอกสาร XML
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
ที่นี่
- “ “ระบุเวอร์ชัน XML และการเข้ารหัสที่จะใช้”
- - ” คือองค์ประกอบราก
- “ … "คือองค์ประกอบย่อย โดยมีหนึ่งรายการต่อบันทึกข้อมูลพนักงานหนึ่งคน"
วิธีอ่าน XML โดยใช้ PHP
ต่อไปนี้เราจะเขียนโค้ดที่จะอ่านเอกสาร XML ของพนักงานและแสดงผลลัพธ์ในเว็บเบราว์เซอร์ index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
ที่นี่
- คำสั่ง “$xml = simplexml_load_file('employees.xml');” ใช้ฟังก์ชัน simplexml_load_file เพื่อโหลดไฟล์ชื่อ employees.xml และกำหนดเนื้อหาให้กับตัวแปร $xml
- “$list = $xml->record;” จะดึงเนื้อหาของโหนดเรคอร์ดออกมา
- “for ($i = 0; $i < count(…)…” คือลูป for ที่อ่านอาร์เรย์และแสดงผลลัพธ์ออกมา
- “$list[$i]->แอตทริบิวต์()->man_no;” อ่านแอตทริบิวต์ man_no ขององค์ประกอบ
- “$รายการ[$i]->ชื่อ;” อ่านค่าขององค์ประกอบชื่อลูก
- “$รายการ[$i]->ตำแหน่ง;” อ่านค่าขององค์ประกอบตำแหน่งลูก
การทดสอบตัวอ่าน XML
สมมติว่าคุณบันทึกไฟล์ index.php ไว้ในโฟลเดอร์ phptuts/xml แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/xml/index.php
วิธีสร้างเอกสาร XML โดยใช้ PHP
ตอนนี้เราจะดูวิธีการสร้างเอกสาร XML โดยใช้ PHP
โค้ดต่อไปนี้ใช้คลาส DOMDocument ที่มีอยู่ใน PHP เพื่อสร้างเอกสาร XML
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
ที่นี่
- “$dom = new DOMDocument();” สร้างอินสแตนซ์ของคลาส DOMDocument
- “$dom->การเข้ารหัส = 'utf-8';” ตั้งค่าการเข้ารหัสเอกสารเป็น utf-8
- “$dom->xmlVersion = '1.0';” ระบุหมายเลขเวอร์ชัน 1.0
- “$dom->formatOutput = จริง;” ช่วยให้มั่นใจได้ว่าเอาต์พุตมีรูปแบบที่ดี
- “$root = $dom->createElement('ภาพยนตร์');” สร้างโหนดรูทชื่อภาพยนตร์
- “$attr_movie_id = new DOMAttr('movie_id', '5467');” กำหนดแอตทริบิวต์ movie_id ของโหนดภาพยนตร์
- คำสั่ง “$dom->createElement('ElementName', 'ElementValue')” สร้างโหนดลูก โดย ElementName ระบุชื่อขององค์ประกอบ เช่น Title และ ElementValue กำหนดค่าให้กับโหนดลูก เช่น The Campaign
- “$root->appendChild($movie_node);” จะเพิ่มโหนดภาพยนตร์เข้าไปในโหนดราก Movies
- “$dom->ผนวกเด็ก($root);” ผนวกโหนดรูทเข้ากับเอกสาร XML
- “$dom->save($xml_file_name);” บันทึกไฟล์ XML ในไดเรกทอรีรากของเว็บเซิร์ฟเวอร์
- คำสั่ง “echo “$xml_file_name has been successfully created”;” จะแสดงข้อความแสดงความสำเร็จ
การทดสอบ XML Creator
สมมติว่าคุณบันทึกไฟล์ create_movies_list.php ไว้ในโฟลเดอร์ phptuts/xml แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/xml/create_movies_list.php
เปิดไฟล์ movies_list.xml
SimpleXML เทียบกับ DOMDocument
PHP มีวิธีการหลักสองวิธีในการทำงานกับ XML SimpleXML เหมาะที่สุดเมื่อคุณต้องการอ่านข้อมูลเป็นหลัก ในขณะที่ DOMDocument ให้การควบคุมที่ละเอียดกว่าสำหรับการสร้างและแก้ไขเอกสารอย่างมาก ตารางด้านล่างนี้เปรียบเทียบทั้งสองวิธี
| แง่มุม | SimpleXML | DOMDocument |
|---|---|---|
| ความง่ายดายในการใช้งาน | ง่ายมากครับ เอกสารนี้ทำงานเหมือนกับวัตถุที่ซ้อนกันอยู่ | API ที่มีรายละเอียดมากขึ้นและใช้โหนดเป็นหลัก |
| เหมาะสำหรับ | การอ่านและการแก้ไขเบื้องต้น | การสร้างเอกสารและการจัดการข้อมูลที่ซับซ้อน |
| รูปแบบการเข้าถึง | $xml->บันทึก->ชื่อ | createElement() และ appendChild() |
| รองรับ XPath | ใช่ ผ่านทาง ->xpath() | ใช่ ผ่านคลาส DOMXPath |
หลักการใช้งานที่เหมาะสมคือ ควรเลือกใช้ SimpleXML ก่อนสำหรับการอ่านฟีดและไฟล์ที่ไม่ซับซ้อน และเปลี่ยนไปใช้ DOMDocument เมื่อต้องการสร้างเอกสาร แทรกโหนดในตำแหน่งที่กำหนด หรือตรวจสอบความถูกต้องตามสคีมา



