PHP XML Expat Parser
XML Expat Parser ในตัวทำให้สามารถประมวลผลเอกสาร XML ใน PHP ได้
XML Expat Parser
Expat parser เป็นตัวแยกวิเคราะห์ตามเหตุการณ์
ดูเศษส่วน XML ต่อไปนี้:
<from>Jani</from>
ตัวแยกวิเคราะห์ตามเหตุการณ์รายงาน XML ด้านบนเป็นชุดของสามเหตุการณ์:
- องค์ประกอบเริ่มต้น: from
- เริ่มส่วน CDATA ค่า: Jani
- องค์ประกอบปิด: from
ฟังก์ชัน XML Expat Parser เป็นส่วนหนึ่งของแกน PHP ไม่จำเป็นต้องติดตั้งเพื่อใช้ฟังก์ชันเหล่านี้
ไฟล์ XML
ไฟล์ XML "note.xml" จะใช้ในตัวอย่างด้านล่าง:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
การเริ่มต้น XML Expat Parser
เราต้องการเริ่มต้น XML Expat Parser ใน PHP กำหนดตัวจัดการบางตัวสำหรับเหตุการณ์ XML ที่แตกต่างกัน จากนั้นจึงแยกวิเคราะห์ไฟล์ XML
ตัวอย่าง
<?php
// Initialize the XML parser
$parser=xml_parser_create();
// Function to use at the start of an element
function start($parser,$element_name,$element_attrs) {
switch($element_name) {
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
// Function to use at the end of an element
function stop($parser,$element_name) {
echo "<br>";
}
// Function to use when finding character data
function char($parser,$data) {
echo $data;
}
// Specify element handler
xml_set_element_handler($parser,"start","stop");
// Specify data handler
xml_set_character_data_handler($parser,"char");
// Open XML file
$fp=fopen("note.xml","r");
// Read data
while ($data=fread($fp,4096)) {
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// Free the XML parser
xml_parser_free($parser);
?>
ตัวอย่างอธิบาย:
- เริ่มต้นตัวแยกวิเคราะห์ XML ด้วย
xml_parser_create()
ฟังก์ชัน - สร้างฟังก์ชันเพื่อใช้กับตัวจัดการเหตุการณ์ต่างๆ
- เพิ่ม
xml_set_element_handler()
ฟังก์ชันเพื่อระบุฟังก์ชันที่จะดำเนินการเมื่อ parser พบแท็กเปิดและปิด - เพิ่ม
xml_set_character_data_handler()
ฟังก์ชันเพื่อระบุฟังก์ชันที่จะดำเนินการเมื่อ parser พบข้อมูลอักขระ - แยกไฟล์ "note.xml" ด้วย
xml_parse()
ฟังก์ชัน - ในกรณีที่เกิดข้อผิดพลาด ให้เพิ่ม
xml_error_string()
ฟังก์ชันเพื่อแปลงข้อผิดพลาด XML เป็นคำอธิบายแบบข้อความ - เรียกใช้
xml_parser_free()
ฟังก์ชันเพื่อปล่อยหน่วยความจำที่จัดสรรด้วยxml_parser_create()
ฟังก์ชัน
PHP XML Expat Parser เพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน PHP Expat โปรดไปที่PHP XML Parser Referenceของเรา