PHP - AJAX XML Parser

Sử dụng PHP với AJAX, chúng ta có thể phân tích một tài liệu XML từ thư mục cục bộ cũng như trên máy chủ. Ví dụ sau đây minh họa cách phân tích XML bằng trình duyệt web.

Đoạn mã phía client sẽ hiển thị một biểu mẫu HTML và định nghĩa một hàm JavaScript để gửi yêu cầu HTTP đến máy chủ bằng đối tượng XMLHttpRequest.

Trên máy chủ, một script PHP tải đối tượng DOM từ tài liệu XML yêu cầu, lấy khóa học đã chọn từ biến $_REQUEST, và hiển thị chi tiết của khóa học đã chọn như một phản hồi trở lại cho khách hàng.

Step 1

Tài liệu XML sau được lưu trữ trên thư mục gốc của máy chủ XAMPP.

<?xml version = "1.0" encoding = "utf-8"?>
<CATALOG>

   <SUBJECT>
      <COURSE>Android</COURSE>
      <COUNTRY>India</COUNTRY>
      <COMPANY>TutorialsPoint</COMPANY>
      <PRICE>$10</PRICE>
      <YEAR>2015</YEAR>
   </SUBJECT>

   <SUBJECT>
      <COURSE>Html</COURSE>
      <COUNTRY>India</COUNTRY>
      <COMPANY>TutorialsPoint</COMPANY>
      <PRICE>$15</PRICE>
      <YEAR>2015</YEAR>
   </SUBJECT>

   <SUBJECT>
      <COURSE>Java</COURSE>
      <COUNTRY>India</COUNTRY>
      <COMPANY>TutorialsPoint</COMPANY>
      <PRICE>$20</PRICE>
      <YEAR>2015</YEAR>
   </SUBJECT>

   <SUBJECT>
      <COURSE>Microsoft</COURSE>
      <COUNTRY>India</COUNTRY>
      <COMPANY>TutorialsPoint</COMPANY>
      <PRICE>$25</PRICE>
      <YEAR>2015</YEAR>
   </SUBJECT>
   
</CATALOG>

Step 2

Mã AJAX dưới đây có một biểu mẫu HTML và một hàm JavaScript để gửi yêu cầu HTTP thông qua đối tượng XMLHttpRequest.

<html>
<head>
   <script>
      function showCD(str) {
         if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
         }

         if (window.XMLHttpRequest) {
		 
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
         } else {  
		 
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }

         xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
               document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
         }
         xmlhttp.open("GET","hello.php?q="+str,true);
         xmlhttp.send();
      }
   </script>
</head>
<body>
   <form>
      Select a Course:
      <select name = "cds" onchange = "showCD(this.value)">
         <option value = "">Select a course:</option>
         <option value = "Android">Android </option>
         <option value = "Html">HTML</option>
         <option value = "Java">Java</option>
         <option value = "Microsoft">MS technologies</option>
      </select>
   </form>
   <div id = "txtHint"><b>Course info will be listed here...</b></div>
</body>
</html>

Step 3

Đoạn mã PHP phía máy chủ để tìm kiếm trong tài liệu XML như sau −

<?php
   $q = $_GET["q"];

   $xmlDoc = new DOMDocument();
   $xmlDoc->load("test.xml");

   $x = $xmlDoc->getElementsByTagName('COURSE');

   for ($i = 0; $i<=$x->length-1; $i++) {
      if ($x->item($i)->nodeType == 1) {
         if ($x->item($i)->childNodes->item(0)->nodeValue == $q) {
            $y = ($x->item($i)->parentNode);
         }
      }
   }

   $cd = ($y->childNodes);

   for ($i = 0;$i<$cd->length;$i++) {
      if ($cd->item($i)->nodeType == 1) {
         echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
         echo($cd->item($i)->childNodes->item(0)->nodeValue);
         echo("<br>");
      }
   }
?>

Truy cập "http://localhost/example.php" để cho phép người dùng chọn một khóa học. Sau khi chọn, các chi tiết liên quan sẽ được lấy từ máy chủ và hiển thị như sau −

PHP AJAX XML Parser