แปลง XML เป็น Associative Array ใน PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) เป็นภาษามาร์กอัปประเภทหนึ่งที่ใช้ในการจัดเก็บข้อมูลในรูปแบบที่มนุษย์อ่านได้ แตกต่างจากภาษามาร์กอัปอื่นๆ ทุกแท็กของภาษานี้กำหนดโดยผู้ใช้ การใช้ XML เป็นวิธีที่ดีกว่าในการจัดเก็บข้อมูลจำนวนเล็กน้อยเมื่อคุณไม่ต้องการใช้ฐานข้อมูลใดๆ ในการจัดเก็บข้อมูล ข้อมูลจากเอกสาร XML สามารถเข้าถึงได้ง่ายและใช้ในเว็บแอปพลิเคชันใดๆ โดยใช้สคริปต์ PHP วิธีแยกวิเคราะห์และจัดเก็บเอกสาร XML ในอาเรย์ที่เชื่อมโยงในบทช่วยสอนนี้

ฟังก์ชั่นที่จำเป็น

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







file_get_contents():



ฟังก์ชันนี้ส่งคืนข้อมูลสตริงโดยการแปลงข้อมูล XML ใช้ชื่อไฟล์ XML เป็นอาร์กิวเมนต์



simplexml_load_string():





ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ XML โดยการแปลงข้อมูลสตริง XML ใช้ข้อมูลสตริง XML เป็นอาร์กิวเมนต์

simplexml_load_file():



ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ XML โดยการแปลงเนื้อหาไฟล์ XML ใช้ชื่อไฟล์ XML เป็นอาร์กิวเมนต์

SimpleXMLElement ():

ใช้เพื่อสร้างวัตถุ XML จากข้อมูล XML ใช้ค่าเนื้อหา XML เป็นอาร์กิวเมนต์

json_encode():

ส่งคืนวัตถุ JSON โดยการแปลงวัตถุ XML ใช้ตัวแปรวัตถุ XML เป็นอาร์กิวเมนต์

json_decode():

ส่งคืนอาร์เรย์ PHP ที่เชื่อมโยงโดยการแปลงข้อมูล JSON ใช้ตัวแปรวัตถุ JSON เป็นอาร์กิวเมนต์

สร้างไฟล์ XML

คุณจะต้องสร้างไฟล์ XML หรือกำหนดข้อมูล XML ในสคริปต์เพื่อทราบวิธีการแปลงข้อมูล XML เป็นอาร์เรย์ PHP ที่เชื่อมโยงกัน สร้างไฟล์ XML ชื่อcourses.xml ด้วยเนื้อหาต่อไปนี้และเก็บไว้ในตำแหน่งที่สคริปต์ PHP อยู่ ไฟล์มีองค์ประกอบย่อยภายใต้องค์ประกอบหลัก ดังนั้น อาร์เรย์ที่เชื่อมโยงสองมิติจะสร้างหลังจากแปลงไฟล์ XML ต่อไปนี้เป็นอาร์เรย์ PHP

หลักสูตร.xml

รุ่น='1.0'?>
>
>การเขียนโปรแกรมเว็บ>
>6 เดือน>
>
>
>ความสุขของการเขียนโปรแกรม PHP>
>อลัน ฟอร์บส์>
>เกาะพลัม>
>
>
>PHP& MySQL มือใหม่ถึงนินจา
ทอม บัตเลอร์ & เควิน แยงค์
SitePoint


Head First PHP & MySQL
Lynn Beighley & Michael Morrison
O'Reilly


ตัวอย่างที่ 1: แปลงเนื้อหาไฟล์ XML เป็นอาร์เรย์ที่เชื่อมโยงโดยไม่ตรวจสอบข้อผิดพลาด

สคริปต์ต่อไปนี้แสดงการใช้ฟังก์ชัน file_get_contents() และ simplexml_load_string() เพื่อสร้างวัตถุ XML ในที่นี้ ไฟล์ courses.xml ใช้สำหรับการแปลงที่สร้างก่อนหน้านี้ ถัดไป ใช้ฟังก์ชัน json_encode() และ json_decode() เพื่อรับอาเรย์ที่เชื่อมโยงหลังจากแปลงเนื้อหาไฟล์ XML หากไม่มีข้อผิดพลาดในเนื้อหา XML สคริปต์ต่อไปนี้จะไม่แสดงข้อผิดพลาด ที่นี่ |_+_| แท็กใช้เพื่อพิมพ์อาร์เรย์ในรูปแบบที่จัดรูปแบบ



//กำหนดไฟล์ XML ที่มีอยู่
$xml = 'คอร์ส.xml';

//อ่านเนื้อหาทั้งหมดของไฟล์ XML เป็นสตริง XML
$xmlData = file_get_contents ($xml);

//แปลงข้อมูลสตริง XML เป็นวัตถุ XML
$xmlObject = simplexml_load_string ($xmlData);

//แปลงวัตถุ XML เป็นวัตถุ JSON
$jsonObject = json_encode ($xmlObject);

//แปลงวัตถุ JSON เป็นอาร์เรย์ที่เชื่อมโยง
$assArray = json_decode ($jsonObject, จริง);

//พิมพ์โครงสร้างของ associative array
โยนออก '
  
';

?>

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ PHP ในที่นี้ อาร์เรย์สองมิติจะถูกสร้างขึ้นโดยอิงตามเนื้อหาของไฟล์ XML คือ courses.xml

ตัวอย่างที่ 2: แปลงเนื้อหาไฟล์ XML เป็นอาร์เรย์ที่เชื่อมโยงด้วยการตรวจสอบข้อผิดพลาด

เป็นการดีกว่าที่จะตรวจสอบข้อผิดพลาดเมื่อแปลง XML เป็นอาร์เรย์ที่เชื่อมโยง มันจะช่วยให้ coder สามารถดีบักโค้ดได้หากมีการใช้งานการตรวจสอบข้อผิดพลาดในสคริปต์ สคริปต์ต่อไปนี้แสดงวิธีการแปลงเนื้อหาไฟล์ XML เป็นอาร์เรย์ที่เชื่อมโยงโดยใช้ฟังก์ชัน simplexml_load_file() พร้อมการจัดการข้อผิดพลาด ฟังก์ชัน libxml_use_internal_errors() ใช้กับค่า TRUE เพื่อเปิดใช้งานการจัดการข้อผิดพลาด หากเนื้อหาไฟล์ XML ที่ใช้ในสคริปต์มีข้อผิดพลาด ฟังก์ชัน simplexml_load_file() จะคืนค่าเท็จ และข้อความแสดงข้อผิดพลาดจะถูกพิมพ์โดยใช้ฟังก์ชัน libxml_get_errors() หากไม่มีข้อผิดพลาดในไฟล์ XML เนื้อหาของไฟล์จะถูกแปลงเป็นอาร์เรย์ที่เชื่อมโยงสองมิติอย่างเหมาะสม



//เปิดใช้งานการจัดการข้อผิดพลาดของผู้ใช้
libxml_use_internal_errors (จริง);

//สร้าง XML Object
$ objXml = simplexml_load_file ('คอร์ส.xml');

//พิมพ์ผิดพลาดหากวัตถุ XML คืนค่า false
ถ้า ($ objXml === เท็จ) {
โยนออก 'มีข้อผิดพลาดในการแยกวิเคราะห์ไฟล์ XMLNS';
แต่ละ( libxml_get_errors () เช่น $ error) {
โยนออก $ error->ข้อความ;
}
ทางออก ;
}

//แปลงวัตถุ XML เป็นวัตถุ JSON
$ objJson = json_encode ($ objXml);
//แปลงวัตถุ JSON เป็นอาร์เรย์ที่เชื่อมโยง
$assarr = json_decode ($ objJson, จริง);

//พิมพ์โครงสร้างของ associative array
โยนออก '
';  
print_r ($assArray);
echo '
'
;

?>

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ PHP ที่นี่ไม่มีข้อผิดพลาดในไฟล์ XML ดังนั้น อาร์เรย์สองมิติจึงถูกสร้างขึ้นเหมือนในตัวอย่างก่อนหน้านี้ โดยอิงตามเนื้อหาของไฟล์ XML,courses.xml

ตัวอย่างที่ 3: แปลงเนื้อหา XML เป็นอาร์เรย์ที่เชื่อมโยง

สคริปต์ต่อไปนี้แสดงวิธีการแปลงข้อมูล XML เป็นอาร์เรย์ที่เชื่อมโยงโดยใช้ฟังก์ชัน SimpleXMLElement() ในสคริปต์ เนื้อหา XML จะถูกเก็บไว้ในตัวแปรชื่อ $xml ซึ่งใช้เป็นอาร์กิวเมนต์ของฟังก์ชัน SimpleXMLElement() ถัดไป ใช้ฟังก์ชัน json_encode() และ json_decode() เพื่อรับอาเรย์ที่เชื่อมโยงหลังจากแปลงเนื้อหาไฟล์ XML



//กำหนดตัวแปร XML
$xml = <<


[ป้องกันอีเมล]

12 / A, ธันมณฑี
ธากา



[ป้องกันอีเมล]

156 โมทีฟ
ธากา



[ป้องกันอีเมล]

21 / B, Mogbazar
ธากา



XML
;

//สร้างวัตถุ XML
$xmlObject = ใหม่SimpleXMLElement($xml);
//สร้างวัตถุ JSON
$jsonObject = json_encode ($xmlObject);
//แปลงวัตถุ JSON เป็นอาร์เรย์ที่เชื่อมโยง
$assArray = json_decode ($jsonObject, จริง);

//พิมพ์โครงสร้างของ associative array
โยนออก '
';  
print_r ($assarr);
echo '
'
;

?>

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ PHP ที่นี่ อาร์เรย์สองมิติถูกสร้างขึ้นตามเนื้อหาของตัวแปร XML $xml

บทสรุป:

มีสามวิธีในการแปลงเนื้อหา XML เป็นอาเรย์ที่เชื่อมโยงที่แสดงในบทช่วยสอนนี้ ซึ่งจะช่วยให้ผู้อ่านทราบวิธีการทำงานกับข้อมูล XML และแยกวิเคราะห์ข้อมูลจากเนื้อหา XML โดยใช้สคริปต์ PHP ได้อย่างง่ายดาย