การแยกข้อความ XML ด้วย PHP ตอนที่ 3
<?xml version="1.0" encoding="UTF-8"?>
<BOOK>
<ADDRESS>
<NAME>Goragod Wiriya</NAME>
<COMPANY>Goragod.com</COMPANY>
<GENDER>male</GENDER>
<EMAIL>goragod@yahoo.com</EMAIL>
</ADDRESS>
<ADDRESS>
<NAME>สวัสดี ประเทศไทย</NAME>
<COMPANY>Google</COMPANY>
<GENDER>female</GENDER>
<EMAIL>info@gmail.com</EMAIL>
</ADDRESS>
</BOOK>
ด้านบนเป็นเอกสาร XML ที่สมบูรณ์ครับ ด้านล่างจะเป็นตัวอย่างการอ่านค่าครับ โดยการใช้ ฟังก์ชั่นในกลุ่ม xml_parser ของ PHP ลองหาอ่านคำสั่งอื่นๆได้จาก manual ของ PHP นะครับ
<?php
$parser = xml_parser_create();
function display( $parser, $data ) {
echo $data; // แสดงผล
}
xml_set_character_data_handler( $parser, "display" ); // กำหนดฟังก์ชั่นเพื่อรับค่าของ XML มาจัดการ
$fp = fopen( "address.xml", "r" ); // เปิดไฟล์ XML
// วนลูปอ่านทีละ 4096 byte
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 ) ) );
}
xml_parser_free( $parser ); // คืนหน่วยความจำ
?>
อ้อ ทั้ง 3 บทความเกี่ยวกับการ parse XML เนี่ยไม่มีปัญหากับภาษาไทยนะครับ ไม่ว่าจะเป็น TIS-620 หรือ UTF-8 เพียงแต่ต้องกำหนด header ของเอกสารให้ถูกต้องเท่านั้น