มีเทคนิคมากมายในการอ่านและเขียน XML ด้วย PHP บทความนี้มีสามวิธีในการอ่าน XML: การใช้ไลบรารี DOM การใช้ SAX parser และการใช้นิพจน์ทั่วไป การเขียน XML โดยใช้เทมเพลตข้อความ DOM และ PHP ก็ครอบคลุมเช่นกัน
การอ่านและการเขียน Extensible Markup Language (XML) ใน PHP อาจดูน่ากลัวเล็กน้อย ที่จริงแล้ว XML และเทคโนโลยีที่เกี่ยวข้องทั้งหมดอาจเป็นเรื่องที่น่ากลัว แต่การอ่านและการเขียน XML ใน PHP ไม่จำเป็นต้องเป็นงานที่น่ากลัวเสมอไป ขั้นแรก คุณต้องเรียนรู้เล็กน้อยเกี่ยวกับ XML ว่าสิ่งนี้คืออะไรและคุณสามารถทำอะไรได้บ้าง จากนั้น คุณจำเป็นต้องเรียนรู้วิธีอ่านและเขียน XML ใน PHP และมีหลายวิธีในการทำเช่นนี้
บทความนี้ให้คำแนะนำสั้นๆ เกี่ยวกับ XML จากนั้นจะอธิบายวิธีการอ่านและเขียน XML ด้วย PHP
XML คืออะไร?
XML เป็นรูปแบบการจัดเก็บข้อมูล ไม่ได้กำหนดข้อมูลที่จะบันทึก และไม่ได้กำหนดรูปแบบของข้อมูล XML เพียงกำหนดแท็กและคุณลักษณะของแท็กเหล่านั้น มาร์กอัป XML ที่มีรูปแบบดีมีลักษณะดังนี้:
<ชื่อ>แจ็ค แฮร์ริงตัน</ชื่อ>
แท็ก <name> นี้ประกอบด้วยข้อความบางส่วน: Jack Herrington
มาร์กอัป XML ที่ไม่มีข้อความมีลักษณะดังนี้:
<เพิ่มพลัง/>
มีหลายวิธีในการเขียนบางสิ่งในรูปแบบ XML ตัวอย่างเช่น แท็กนี้สร้างผลลัพธ์เดียวกันกับแท็กก่อนหน้า:
<เพิ่มพลัง></เพิ่มพลัง>
คุณยังสามารถเพิ่มแอตทริบิวต์ให้กับแท็ก XML ได้ ตัวอย่างเช่น แท็ก <name> นี้ประกอบด้วยแอตทริบิวต์แรกและสุดท้าย:
<ชื่อแรก = "แจ็ค" สุดท้าย = "แฮร์ริงตัน" />
อักขระพิเศษสามารถเข้ารหัสในรูปแบบ XML ได้ ตัวอย่างเช่น สัญลักษณ์ & สามารถเข้ารหัสได้ดังนี้:
-
ไฟล์ XML ที่มีแท็กและแอตทริบิวต์จะ มีรูปแบบที่ถูกต้อง หากมีการจัดรูปแบบตามตัวอย่าง ซึ่งหมายความว่าแท็กมีความสมมาตรและมีการเข้ารหัสอักขระอย่างถูกต้อง รายการ 1 เป็นตัวอย่างของ XML ที่มีรูปแบบที่ถูกต้อง
รายการ 1. ตัวอย่างรายการหนังสือ XML
<หนังสือ><
<หนังสือ><
<ผู้แต่ง><แจ็ค เฮอร์ริงตัน</ผู้เขียน>
<title">แฮ็ค PHP </title>
<ผู้จัดพิมพ์>โอไรลี่</ผู้จัดพิมพ์>
</หนังสือ><
<หนังสือ><
<ผู้แต่ง><แจ็ค เฮอร์ริงตัน</ผู้เขียน>
<title>แฮ็กพอดแคสต์</title>
<ผู้จัดพิมพ์>โอไรลี่</ผู้จัดพิมพ์>
</หนังสือ><
</หนังสือ><
|
XML ในรายการ 1 มีรายชื่อหนังสือ แท็ก <books> หลักประกอบด้วยชุดแท็ก <book> ซึ่งแต่ละแท็กประกอบด้วยแท็ก <author>, <title> และ <publisher>
เอกสาร XML ถูกต้องเมื่อโครงสร้างมาร์กอัปและเนื้อหาได้รับการตรวจสอบโดยไฟล์สคีมาภายนอก ไฟล์สคีมาสามารถระบุได้ในรูปแบบที่แตกต่างกัน สำหรับบทความนี้ สิ่งที่จำเป็นต้องมีคือ XML ที่มีรูปแบบถูกต้อง
หากคุณคิดว่า XML มีลักษณะคล้ายกับ Hypertext Markup Language (HTML) มาก แสดงว่าคุณคิดถูก XML และ HTML เป็นทั้งภาษาที่ใช้มาร์กอัปและมีความคล้ายคลึงกันหลายประการ อย่างไรก็ตาม สิ่งสำคัญคือต้องชี้ให้เห็นว่าแม้ว่าเอกสาร XML อาจมีรูปแบบ HTML ที่ดี แต่เอกสาร HTML ทั้งหมดไม่ได้มีรูปแบบ XML ที่ดี แท็กขึ้นบรรทัดใหม่ (br) เป็นตัวอย่างที่ดีของความแตกต่างระหว่าง XML และ HTML แท็กขึ้นบรรทัดใหม่นี้เป็น HTML ที่มีรูปแบบถูกต้อง แต่ไม่ใช่ XML ที่มีรูปแบบที่ถูกต้อง:
<p>นี่คือย่อหน้า<br>
ด้วยการขึ้นบรรทัดใหม่</p><
แท็กขึ้นบรรทัดใหม่นี้มีรูปแบบ XML และ HTML ที่ดี:
<p><นี่คือย่อหน้า<br />
ด้วยการขึ้นบรรทัดใหม่</p><
หากคุณต้องการเขียน HTML เป็น XML ที่มีรูปแบบถูกต้อง ให้ปฏิบัติตามมาตรฐาน Extensible Hypertext Markup Language (XHTML) ของคณะกรรมการ W3C (ดู ข้อมูล ) เบราว์เซอร์สมัยใหม่ทั้งหมดสามารถเรนเดอร์ XHTML ได้ นอกจากนี้ คุณยังสามารถใช้เครื่องมือ XML เพื่ออ่าน XHTML และค้นหาข้อมูลในเอกสารได้ ซึ่งง่ายกว่าการแยกวิเคราะห์ HTML มาก
อ่าน XML โดยใช้ไลบรารี DOM
วิธีที่ง่ายที่สุดในการอ่านไฟล์ XML ที่มีรูปแบบถูกต้องคือการใช้ไลบรารี Document Object Model (DOM) ที่คอมไพล์เป็นการติดตั้ง PHP บางตัว ไลบรารี DOM อ่านเอกสาร XML ทั้งหมดลงในหน่วยความจำและแสดงเป็นแผนผังโหนด ดังแสดงในรูปที่ 1
รูปที่ 1 ต้นไม้ XML DOM สำหรับหนังสือ XML
โหนดหนังสือที่ด้านบนของแผนผังมีแท็กย่อยของหนังสือสองรายการ ในหนังสือแต่ละเล่มมีหลายโหนด: ผู้แต่ง ผู้จัดพิมพ์ และชื่อเรื่อง โหนดผู้เขียน ผู้จัดพิมพ์ และชื่อเรื่องต่างก็มีโหนดย่อยที่เป็นข้อความซึ่งมีข้อความ
รหัสที่อ่านไฟล์ XML ของหนังสือและแสดงเนื้อหาโดยใช้ DOM จะแสดงอยู่ในรายการที่ 2
รายการ 2. การอ่านหนังสือ XML โดยใช้ DOM
<?php
$doc = DOMDocument ใหม่();
$doc->load( 'books.xml' );
$books = $doc->getElementsByTagName( "หนังสือ" );
foreach( $หนังสือเป็น $book )
-
$authors = $book->getElementsByTagName( "ผู้เขียน" );
$author = $authors->item(0)->nodeValue;
$ผู้จัดพิมพ์ = $book->getElementsByTagName( "ผู้จัดพิมพ์" );
$publisher = $publishers->รายการ(0)->nodeValue;
$titles = $book->getElementsByTagName( "title" );
$title = $titles->item(0)->nodeValue;
echo "$title - $author - $publishern";
-
?
|
ขั้นแรกสคริปต์จะสร้างออบเจ็กต์เอกสาร DOM ใหม่และโหลด Book XML ลงในออบเจ็กต์นี้โดยใช้วิธีการโหลด หลังจากนั้น สคริปต์จะใช้เมธอด getElementsByName เพื่อรับรายการองค์ประกอบทั้งหมดภายใต้ชื่อที่ระบุ
ในการวนซ้ำของโหนด book สคริปต์ใช้เมธอด getElementsByName เพื่อรับ nodeValue ของแท็กผู้เขียน ผู้จัดพิมพ์ และชื่อ nodeValue คือข้อความในโหนด สคริปต์จะแสดงค่าเหล่านี้
คุณสามารถรันสคริปต์ PHP บนบรรทัดคำสั่งได้ดังนี้:
%phpe1.php
PHP Hacks - Jack Herrington - O'Reilly
Podcasting Hacks - Jack Herrington - O'Reilly
-
อย่างที่คุณเห็น แต่ละบล็อกหนังสือส่งออกหนึ่งบรรทัด นี่เป็นการเริ่มต้นที่ดี แต่ถ้าคุณไม่มีสิทธิ์เข้าถึงไลบรารี XML DOM ล่ะ
อ่าน XML ด้วย SAX parser
อีกวิธีหนึ่งในการอ่าน XML คือการใช้ตัวแยกวิเคราะห์ XML Simple API (SAX) การติดตั้ง PHP ส่วนใหญ่จะมี SAX parser ด้วย ตัวแยกวิเคราะห์ SAX ทำงานในรูปแบบการติดต่อกลับ แต่ละครั้งที่เปิดหรือปิดแท็ก หรือทุกครั้งที่ parser เห็นข้อความ ฟังก์ชันที่ผู้ใช้กำหนดจะถูกเรียกกลับพร้อมข้อมูลเกี่ยวกับโหนดหรือข้อความ
ข้อดีของ SAX parser คือมันมีน้ำหนักเบาอย่างแท้จริง parser จะไม่เก็บเนื้อหาไว้ในหน่วยความจำเป็นเวลานาน ดังนั้นจึงสามารถใช้กับไฟล์ที่มีขนาดใหญ่มากได้ ข้อเสียคือการเขียนการเรียกกลับตัวแยกวิเคราะห์ SAX นั้นยุ่งยากมาก รายการ 3 แสดงรหัสที่ใช้ SAX เพื่ออ่านหนังสือไฟล์ XML และแสดงเนื้อหา
รายการ 3 การอ่านหนังสือ XML พร้อมตัวแยกวิเคราะห์ SAX
<?php
$g_books = อาร์เรย์();
$g_elem = โมฆะ;
ฟังก์ชั่น startElement( $parser, $name, $attrs )
-
$g_books ทั่วโลก, $g_elem;
ถ้า ( $name == 'BOOK' ) $g_books []= array();
$g_elem = $ชื่อ;
-
ฟังก์ชั่น endElement( $parser, $name )
-
ทั่วโลก $g_elem;
$g_elem = โมฆะ;
-
ฟังก์ชัน textData( $parser, $text )
-
$g_books ทั่วโลก, $g_elem;
ถ้า ( $g_elem == 'ผู้เขียน' ||
$g_elem == 'ผู้เผยแพร่' ||
$g_elem == 'ชื่อเรื่อง' )
-
$g_books[ นับ( $g_books ) - 1 ][ $g_elem ] = $text;
-
-
$parser = xml_parser_create();
xml_set_element_handler( $parser, "startElement", "endElement" );
xml_set_Character_data_handler( $parser, "textData" );
$f = fopen( 'books.xml', 'r' );
ในขณะที่( $data = fread( $f, 4096 ) )
-
xml_parse( $พาร์เซอร์, $data );
-
xml_parser_free( $ตัวแยกวิเคราะห์ );
foreach( $g_books เป็น $book )
-
echo $book['TITLE']." - ".$book['AUTHOR']." - ";
echo $book['ผู้เผยแพร่']"n";
-
?
|
ขั้นแรกสคริปต์จะตั้งค่าอาร์เรย์ g_books ซึ่งเก็บข้อมูลหนังสือและข้อมูลหนังสือทั้งหมดไว้ในหน่วยความจำ และตัวแปร g_elem จะเก็บชื่อของแท็กที่สคริปต์กำลังประมวลผลอยู่ สคริปต์จะกำหนดฟังก์ชันการโทรกลับ ในตัวอย่างนี้ ฟังก์ชันการโทรกลับคือ startElement, endElement และ textData เมื่อเปิดและปิดเครื่องหมาย ให้เรียกใช้ฟังก์ชัน startElement และ endElement ตามลำดับ TextData ถูกเรียกบนข้อความระหว่างแท็กเปิดและแท็กปิด
ในตัวอย่างนี้ แท็ก startElement จะค้นหาแท็กหนังสือเพื่อเริ่มต้นองค์ประกอบใหม่ในอาร์เรย์หนังสือ จากนั้นฟังก์ชัน textData จะดูองค์ประกอบปัจจุบันเพื่อดูว่าเป็นผู้จัดพิมพ์ ชื่อเรื่อง หรือแท็กผู้เขียน หากเป็นเช่นนั้น ฟังก์ชันจะใส่ข้อความปัจจุบันลงในหนังสือเล่มปัจจุบัน
เพื่อให้การแยกวิเคราะห์ดำเนินต่อไป สคริปต์จะสร้าง parser โดยใช้ฟังก์ชัน xml_parser_create จากนั้น ตั้งค่าหมายเลขอ้างอิงการเรียกกลับ หลังจากนั้นสคริปต์จะอ่านไฟล์และส่งชิ้นส่วนของไฟล์ไปยัง parser หลังจากอ่านไฟล์แล้ว ฟังก์ชัน xml_parser_free จะลบ parser ส่วนท้ายของสคริปต์จะแสดงเนื้อหาของอาร์เรย์ g_books
อย่างที่คุณเห็น สิ่งนี้ยากกว่าการเขียนฟังก์ชันเดียวกันใน DOM มาก จะเกิดอะไรขึ้นหากไม่มีไลบรารี DOM และไม่มีไลบรารี SAX มีทางเลือกอื่นหรือไม่?
แยกวิเคราะห์ XML ด้วยนิพจน์ทั่วไป
ฉันแน่ใจว่าวิศวกรบางคนจะวิพากษ์วิจารณ์ฉันถึงขนาดพูดถึงวิธีนี้ แต่ก็เป็นไปได้ที่จะแยกวิเคราะห์ XML ด้วยนิพจน์ทั่วไป รายการที่ 4 แสดงตัวอย่างการใช้ฟังก์ชัน preg_ เพื่ออ่านไฟล์หนังสือ
รายการ 4. การอ่าน XML ด้วยนิพจน์ทั่วไป
<?php
$xml = "";
$f = fopen( 'books.xml', 'r' );
ในขณะที่( $data = fread( $f, 4096 ) ) { $xml .= $data;
fclose( $f );
preg_match_all( "/<book>(.*?)</book">/s",
$xml, $บุ๊กบล็อก );
foreach( $bookblocks[1] เป็น $block )
-
preg_match_all( "/<author>(.*?)</author">/",
$บล็อค, $ผู้เขียน );
preg_match_all( "/<title>(.*?)</title>/",
$บล็อค, $หัวข้อ );
preg_match_all( "/<ผู้เผยแพร่">(.*?)</ผู้เผยแพร่>/",
$block, $ผู้เผยแพร่ );
เสียงสะท้อน( $title[1][0]." - ".$author[1][0]" - ".
$ผู้เผยแพร่[1][0]"n" );
-
?
|
สังเกตว่ารหัสนี้สั้นแค่ไหน เริ่มแรกจะอ่านไฟล์เป็นสตริงขนาดใหญ่ จากนั้นใช้ฟังก์ชัน regex เพื่ออ่านรายการหนังสือแต่ละรายการ สุดท้าย ใช้ foreach loop เพื่อวนซ้ำบล็อกหนังสือแต่ละเล่มและแยกชื่อผู้แต่ง ชื่อหนังสือ และผู้จัดพิมพ์
แล้วมีข้อบกพร่องตรงไหน? ปัญหาในการใช้โค้ดนิพจน์ทั่วไปในการอ่าน XML คือไม่ได้ตรวจสอบก่อนเพื่อให้แน่ใจว่า XML มีรูปแบบที่ถูกต้อง ซึ่งหมายความว่าไม่มีทางรู้ได้ว่า XML มีรูปแบบที่ถูกต้องหรือไม่ก่อนที่จะอ่าน นอกจากนี้ XML ที่มีรูปแบบถูกต้องบางส่วนอาจไม่ตรงกับนิพจน์ทั่วไป ดังนั้นจึงต้องแก้ไขในภายหลัง
ฉันไม่เคยแนะนำให้ใช้นิพจน์ทั่วไปในการอ่าน XML แต่บางครั้งก็เป็นวิธีที่ดีที่สุดสำหรับความเข้ากันได้ เนื่องจากฟังก์ชันนิพจน์ทั่วไปจะพร้อมใช้งานเสมอ อย่าใช้นิพจน์ทั่วไปเพื่ออ่าน XML โดยตรงจากผู้ใช้ เนื่องจากคุณไม่สามารถควบคุมรูปแบบหรือโครงสร้างของ XML ดังกล่าวได้ คุณควรใช้ไลบรารี DOM หรือ SAX parser เพื่ออ่าน XML จากผู้ใช้เสมอ การเขียน XML โดยใช้ DOM
การอ่าน XML เป็นเพียงส่วนหนึ่งของสมการเท่านั้น จะเขียน XML ได้อย่างไร? วิธีที่ดีที่สุดในการเขียน XML คือการใช้ DOM รายการที่ 5 แสดงให้เห็นว่า DOM สร้างไฟล์ XML ของหนังสืออย่างไร
รายการ 5. การเขียนหนังสือ XML โดยใช้ DOM
<?php
$หนังสือ = อาร์เรย์();
$หนังสือ [] = อาร์เรย์(
'title' => 'แฮ็ก PHP',
'author' => 'แจ็ค เฮอร์ริงตัน',
'ผู้เผยแพร่' => "โอ'ไรลีย์"
-
$หนังสือ [] = อาร์เรย์(
'title' => 'แฮ็กพอดแคสต์',
'author' => 'แจ็ค เฮอร์ริงตัน',
'ผู้เผยแพร่' => "โอ'ไรลีย์"
-
$doc = DOMDocument ใหม่();
$doc->formatOutput = จริง;
$r = $doc->createElement( "หนังสือ" );
$doc->ผนวกเด็ก( $r );
foreach( $หนังสือเป็น $book )
-
$b = $doc->createElement( "หนังสือ" );
$author = $doc->createElement( "ผู้เขียน" );
$author->ผนวกเด็ก(
$doc->createTextNode( $book['author'] )
-
$b->ผนวกเด็ก( $ผู้เขียน );
$title = $doc->createElement( "ชื่อ" );
$title->ผนวกเด็ก(
$doc->createTextNode( $book['title'] )
-
$b->ผนวกเด็ก( $หัวเรื่อง );
$publisher = $doc->createElement( "ผู้เผยแพร่" );
$ผู้เผยแพร่->ผนวกChild(
$doc->createTextNode( $book['publisher'] )
-
$b->ผนวกเด็ก( $ผู้เผยแพร่ );
$r->ผนวกเด็ก( $b );
-
เสียงสะท้อน $doc->saveXML();
?
|
ที่ด้านบนของสคริปต์ อาร์เรย์หนังสือจะเต็มไปด้วยหนังสือตัวอย่างบางเล่ม ข้อมูลนี้อาจมาจากผู้ใช้หรือจากฐานข้อมูล
หลังจากโหลดหนังสือตัวอย่างแล้ว สคริปต์จะสร้าง DOMDocument ใหม่ และเพิ่มโหนดหนังสือหลักลงไป จากนั้นสคริปต์จะสร้างโหนดสำหรับผู้แต่ง ชื่อหนังสือ และผู้จัดพิมพ์หนังสือแต่ละเล่ม และเพิ่มโหนดข้อความลงในแต่ละโหนด ขั้นตอนสุดท้ายสำหรับแต่ละโหนด book คือการเพิ่มอีกครั้งลงใน root node book
ที่ส่วนท้ายของสคริปต์ ให้ใช้เมธอด saveXML เพื่อส่งออก XML ไปยังคอนโซล (คุณยังสามารถใช้วิธีบันทึกเพื่อสร้างไฟล์ XML ได้) ผลลัพธ์ของสคริปต์จะแสดงในรายการที่ 6
รายการ 6. เอาต์พุตของสคริปต์สร้าง DOM
%phpe4.php
<?xml version="1.0"?>
<หนังสือ><
<หนังสือ><
<ผู้แต่ง><แจ็ค เฮอร์ริงตัน</ผู้เขียน>
<title">แฮ็ค PHP </title>
<ผู้จัดพิมพ์>โอไรลี่</ผู้จัดพิมพ์>
</หนังสือ><
<หนังสือ><
<ผู้แต่ง><แจ็ค เฮอร์ริงตัน</ผู้เขียน>
<title>แฮ็กพอดแคสต์</title>
<ผู้จัดพิมพ์>โอไรลี่</ผู้จัดพิมพ์>
</หนังสือ><
</หนังสือ><
-
|
คุณค่าที่แท้จริงของการใช้ DOM คือ XML ที่สร้างขึ้นนั้นมีรูปแบบที่ถูกต้องเสมอ แต่จะเกิดอะไรขึ้นถ้าคุณไม่สามารถสร้าง XML โดยใช้ DOM ได้
การเขียน XML ใน PHP
หากไม่มี DOM ก็สามารถเขียน XML ได้โดยใช้เทมเพลตข้อความของ PHP รายการที่ 7 แสดงให้เห็นว่า PHP สร้างไฟล์ XML ของหนังสืออย่างไร
รายการ 7. การเขียนหนังสือ XML ใน PHP
<?php
$หนังสือ = อาร์เรย์();
$หนังสือ [] = อาร์เรย์(
'title' => 'แฮ็ก PHP',
'author' => 'แจ็ค เฮอร์ริงตัน',
'ผู้เผยแพร่' => "โอ'ไรลีย์"
-
$หนังสือ [] = อาร์เรย์(
'title' => 'แฮ็กพอดแคสต์',
'author' => 'แจ็ค เฮอร์ริงตัน',
'ผู้เผยแพร่' => "โอ'ไรลีย์"
-
?
<หนังสือ><
<?php
foreach( $หนังสือเป็น $book )
-
?
<หนังสือ><
<title><?php echo( $book['title'] ); ?></title>
<ผู้เขียน><?php echo( $book['author'] );
</ผู้แต่ง><
<ผู้จัดพิมพ์><?php echo( $book['publisher'] );
</ผู้จัดพิมพ์><
</หนังสือ><
<?php
-
?
</หนังสือ><
|
ส่วนบนของสคริปต์จะคล้ายกับสคริปต์ DOM ด้านล่างของสคริปต์จะเปิดแท็กหนังสือ จากนั้นวนซ้ำหนังสือแต่ละเล่ม สร้างแท็กหนังสือและแท็กชื่อภายใน ผู้แต่ง และผู้จัดพิมพ์ทั้งหมด
ปัญหาของแนวทางนี้คือการเข้ารหัสเอนทิตี เพื่อให้แน่ใจว่าเอนทิตีได้รับการเข้ารหัสอย่างถูกต้อง จะต้องเรียกใช้ฟังก์ชัน htmlentities ในแต่ละรายการ ดังที่แสดงในรายการ 8
รายการ 8 การเข้ารหัสเอนทิตีโดยใช้ฟังก์ชัน htmlentities
<หนังสือ><
<?php
foreach( $หนังสือเป็น $book )
-
$title = htmlentities( $book['title'], ENT_QUOTES );
$author = htmlentities( $book['author'], ENT_QUOTES );
$publisher = htmlentities( $book['publisher'], ENT_QUOTES );
?
<หนังสือ><
<ชื่อ><?php echo( $title ); ?></title><
<ผู้เขียน><?php echo( $author ); ?> </ผู้เขียน><
<ผู้เผยแพร่โฆษณา><?php echo( $ผู้เผยแพร่ );
</ผู้จัดพิมพ์><
</หนังสือ><
<?php
-
?
</หนังสือ><
|
นี่คือจุดที่การเขียน XML ใน PHP พื้นฐานกลายเป็นเรื่องที่น่ารำคาญ คุณคิดว่าคุณได้สร้าง XML ที่สมบูรณ์แบบแล้ว แต่ทันทีที่คุณพยายามใช้ข้อมูล คุณจะพบว่าองค์ประกอบบางอย่างมีการเข้ารหัสไม่ถูกต้อง
บทสรุป
มักจะมีการพูดเกินจริงและความสับสนเกี่ยวกับ XML อยู่เสมอ อย่างไรก็ตาม มันไม่ยากอย่างที่คิด โดยเฉพาะในภาษาที่ยอดเยี่ยมพอ ๆ กับ PHP เมื่อคุณเข้าใจและนำ XML ไปใช้อย่างถูกต้องแล้ว คุณจะพบกับเครื่องมืออันทรงพลังมากมายที่พร้อมใช้ XPath และ XSLT เป็นเครื่องมือสองอย่างที่ควรค่าแก่การศึกษา