บทช่วยสอน PHP XML: สร้าง แยกวิเคราะห์ อ่านพร้อมตัวอย่าง

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สคริปต์ Pythonและ PHP เป็นต้น

คำหลัก CDATA ซึ่งเป็นตัวย่อสำหรับข้อมูลอักขระ (ไม่แยกวิเคราะห์) ใช้เพื่อละเว้นอักขระพิเศษ เช่น “<,>” เมื่อแยกวิเคราะห์เอกสาร XML

เหตุใดจึงต้องใช้ XML

  • บริการเว็บเช่น SOAP และ REST ใช้รูปแบบ XML เพื่อแลกเปลี่ยนข้อมูล การเรียนรู้ว่า XML คืออะไรและทำงานอย่างไรจะทำให้คุณได้เปรียบในการแข่งขันในฐานะนักพัฒนา เนื่องจากแอปพลิเคชันสมัยใหม่ใช้บริการเว็บอย่างหนัก
  • เอกสาร XML สามารถใช้เพื่อจัดเก็บการตั้งค่าการกำหนดค่าของแอปพลิเคชัน
  • ช่วยให้คุณสร้างแท็กที่คุณกำหนดเองซึ่งทำให้มีความยืดหยุ่นมากขึ้น

ตัวอย่างเอกสาร XML

สมมติว่าคุณกำลังพัฒนาแอปพลิเคชันที่รับข้อมูลจากบริการเว็บในรูปแบบ 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->บันทึก;” รับเนื้อหาของโหนดบันทึก
  • “for ($i = 0; $i < count(…)…” เป็น for loop ที่อ่านอาร์เรย์ตัวเลขและส่งผลลัพธ์ออกมา
  • “$list[$i]->แอตทริบิวต์()->man_no;” อ่านแอตทริบิวต์ man_no ขององค์ประกอบ
  • “$รายการ[$i]->ชื่อ;” อ่านค่าขององค์ประกอบชื่อลูก
  • “$รายการ[$i]->ตำแหน่ง;” อ่านค่าขององค์ประกอบตำแหน่งลูก

การทดสอบแอปพลิเคชันของเรา

สมมติว่าคุณบันทึกไฟล์ index.php ในโฟลเดอร์ phptus/xml ให้เรียกดู URL http://localhost/phptuts/xml/index.php

อ่าน XML โดยใช้ PHP

วิธีสร้างเอกสาร XML โดยใช้ PHP

ตอนนี้เราจะดูวิธีการสร้างเอกสาร XML โดยใช้ PHP

เราจะใช้ตัวอย่างข้างต้นในแผนภาพต้นไม้ DOM

โค้ดต่อไปนี้ใช้คลาส 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', 'The Campaign');

		$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 = DOMDocument ใหม่();” สร้างอินสแตนซ์ของคลาส DOMDocument
  • “$dom->การเข้ารหัส = 'utf-8';” ตั้งค่าการเข้ารหัสเอกสารเป็น utf-8
  • “$dom->xmlVersion = '1.0';” ระบุหมายเลขเวอร์ชัน 1.0
  • “$dom->formatOutput = จริง;” ช่วยให้มั่นใจได้ว่าเอาต์พุตมีรูปแบบที่ดี
  • “$root = $dom->createElement('ภาพยนตร์');” สร้างโหนดรูทชื่อภาพยนตร์
  • “$attr_movie_id = DOMAttr ใหม่('movie_id', '5467');” กำหนดแอตทริบิวต์รหัสภาพยนตร์ของโหนดภาพยนตร์
  • “$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')” สร้างโหนดลูกของโหนดภาพยนตร์ ElementName ระบุชื่อขององค์ประกอบ เช่น ชื่อเรื่อง ElementValue ตั้งค่าโหนดย่อย เช่น แคมเปญ
  • “$root->appendChild($movie_node);” ผนวกองค์ประกอบ movie_node เข้ากับรูทโหนด Movies
  • “$dom->ผนวกเด็ก($root);” ผนวกโหนดรูทเข้ากับเอกสาร XML
  • “$dom->save($xml_file_name);” บันทึกไฟล์ XML ในไดเรกทอรีรากของเว็บเซิร์ฟเวอร์
  • “เอคโค่ ' . $xml_file_name . ' สร้างสำเร็จแล้ว';” สร้างลิงก์ไปยังไฟล์ XML

การทดสอบแอปพลิเคชันของเรา

สมมติว่าคุณบันทึกไฟล์ create_movies_list ไว้ในโฟลเดอร์ phptuts/xml ให้เรียกดู URL http://localhost/phptuts/xml/create_movies_list.php

สร้างเอกสาร XML โดยใช้ PHP

คลิกที่ลิงค์ movies_list_xml

สร้างเอกสาร XML โดยใช้ PHP

สรุป

  • XML เป็นตัวย่อของภาษามาร์กอัปที่ขยายได้
  • XML สามารถใช้เพื่อแลกเปลี่ยนข้อมูลระหว่างระบบหรือจัดเก็บการตั้งค่าการกำหนดค่าของแอปพลิเคชัน ฯลฯ
  • DOM เป็นตัวย่อสำหรับ Document Object Model XML DOM ดูเอกสาร XML เป็นโครงสร้างแบบต้นไม้
  • XML Parser เป็นโปรแกรมที่แปล XML เป็นเอกสาร XML ให้เป็นโครงสร้างต้นไม้ DOM เช่นเดียวกับเอกสาร
  • CDATA ใช้เพื่อละเว้นอักขระพิเศษเมื่อแยกวิเคราะห์เอกสาร XML
  • PHP ใช้ simplexml_load_file เพื่ออ่านเอกสาร XML และส่งคืนผลลัพธ์เป็นอาร์เรย์ตัวเลข
  • คลาส PHP DOMDocument เพื่อสร้างไฟล์ XML