ตัวแยกวิเคราะห์ DOM ในตัวทำให้สามารถประมวลผลเอกสาร XML ใน PHP ได้
W3C DOM จัดเตรียมชุดออบเจ็กต์มาตรฐานสำหรับเอกสาร HTML และ XML รวมถึงอินเทอร์เฟซมาตรฐานสำหรับการเข้าถึงและจัดการเอกสารเหล่านี้ W3C DOM แบ่งออกเป็นส่วนต่างๆ (Core, XML และ HTML) และระดับที่แตกต่างกัน (DOM ระดับ 1/2/3): * Core DOM - กำหนดชุดมาตรฐานของวัตถุสำหรับเอกสารที่มีโครงสร้างใด ๆ * XML DOM - สำหรับเอกสาร XML การกำหนด ชุดมาตรฐานของวัตถุ* HTML DOM - การกำหนดชุดมาตรฐานของวัตถุสำหรับเอกสาร HTML หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ XML DOM โปรดไปที่บทช่วยสอน XML DOM ของเรา
หากต้องการอ่านและอัปเดต - สร้างและประมวลผล - เอกสาร XML คุณต้องมีตัวแยกวิเคราะห์ XML
ตัวแยกวิเคราะห์ XML มีสองประเภทพื้นฐาน:
ตัวแยกวิเคราะห์แบบต้นไม้: ตัวแยกวิเคราะห์นี้แปลงเอกสาร XML ให้เป็นโครงสร้างแบบต้นไม้ โดยจะวิเคราะห์เอกสารทั้งหมดและให้สิทธิ์ในการเข้าถึงองค์ประกอบต่างๆ ในแผนผัง เช่น Document Object Model (DOM)
ตัวแยกวิเคราะห์ตามเหตุการณ์: ถือว่าเอกสาร XML เป็นชุดของเหตุการณ์ เมื่อมีเหตุการณ์เฉพาะเกิดขึ้น parser จะเรียกใช้ฟังก์ชันเพื่อจัดการเหตุการณ์นั้น
ตัวแยกวิเคราะห์ DOM เป็นตัวแยกวิเคราะห์แบบต้นไม้
โปรดดูส่วนเอกสาร XML ต่อไปนี้:
<?xml version="1.0" encoding="ISO-8859-1"?><from>เจนี่</from>
XML DOM ถือว่า XML ข้างต้นเป็นโครงสร้างแบบต้นไม้:
ระดับ 1: เอกสาร XML
ระดับ 2: องค์ประกอบรูท: <จาก>
ระดับ 3: องค์ประกอบข้อความ: "Jani"
ฟังก์ชันตัวแยกวิเคราะห์ DOM XML เป็นส่วนสำคัญของแกน PHP ไม่จำเป็นต้องติดตั้งเพื่อใช้ฟังก์ชันเหล่านี้
ไฟล์ XML ต่อไปนี้จะถูกใช้ในตัวอย่างของเรา:
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don สุดสัปดาห์นี้อย่าลืมฉัน!</body></note>
เราจำเป็นต้องเริ่มต้นตัวแยกวิเคราะห์ XML โหลด XML และส่งออก:
<?php$xmlDoc = new DOMDocument();$xmlDoc->load("note.xml");print $xmlDoc->saveXML();?>
รหัสข้างต้นจะส่งออก:
ToveJaniReminder สุดสัปดาห์นี้อย่าลืมฉัน!
หากคุณดูซอร์สโค้ดในหน้าต่างเบราว์เซอร์ คุณจะเห็น HTML ต่อไปนี้:
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don สุดสัปดาห์นี้อย่าลืมฉัน!</body></note>
ตัวอย่างข้างต้นสร้าง DOMDocument-Object และโหลด XML ใน "note.xml" ลงในวัตถุเอกสารนี้
ฟังก์ชัน saveXML() จะทำให้เอกสาร XML ภายในเป็นสตริง เพื่อให้เราสามารถส่งออกเอกสารนั้นได้
เราต้องการเริ่มต้นตัวแยกวิเคราะห์ XML โหลด XML และวนซ้ำองค์ประกอบทั้งหมดขององค์ประกอบ <note>:
<?php$xmlDoc = new DOMDocument();$xmlDoc->load("note.xml");$x = $xmlDoc->documentElement;foreach ($x->childNodes AS $item) { พิมพ์ $item-> nodeName . " = " . $item->nodeValue
รหัสข้างต้นจะส่งออก:
#text = to = Tove#text = from = Jani#text = heading = Reminder#text = body = อย่าลืมฉันสุดสัปดาห์นี้!#text =
ในตัวอย่างด้านบน คุณจะเห็นว่ามีโหนดข้อความว่างระหว่างแต่ละองค์ประกอบ
เมื่อสร้าง XML มักจะมีช่องว่างระหว่างโหนด ตัวแยกวิเคราะห์ XML DOM ถือว่าองค์ประกอบเหล่านี้เป็นองค์ประกอบปกติ ซึ่งบางครั้งอาจทำให้เกิดปัญหาได้หากคุณไม่ใส่ใจกับองค์ประกอบเหล่านั้น
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ XML DOM โปรดไปที่บทช่วยสอน XML DOM ของเรา