PHP & XML

XML là một ngôn ngữ đánh dấu khá giống HTML. Một tài liệu XML là thuần văn bản và chứa các thẻ được giới hạn bởi < và >. Có hai điểm khác nhau chủ yếu giữa XML và HTML.

  • XML không định nghĩa một tập các thẻ cụ thể.
  • XML thực sự “kén chọn” cấu trúc tài liệu.

XML cung cấp cho bạn nhiều đặc quyền hơn HTML. HTML có một tập hợp thẻ cụ thể: thẻ <a></a> bao quanh một link, thẻ <p> bắt đầu một đoạn văn… Tuy nhiên, một tài liệu XML có thể sử dụng bất kỳ thẻ nào bạn muốn. Đặt thẻ <rating></rating> xung quanh một movie rating, thẻ <height></height> xung quanh độ cao của người nào đó. Vì thế, XML cung cấp cho bạn tùy chọn để cơ cấu các thẻ cho riêng bạn.

XML là khá nghiêm ngặt khi nói đến cấu trúc tài liệu. HTML cho phép bạn làm việc nhanh và khá mềm mỏng với các thẻ đóng và thẻ mở. Nhưng XML thì không như thế.

List HTML như sau được coi là không hợp lệ trong XML:

<ul>
   <li>HTML là ngôn ngữ đánh dấu văn bản
   <li>XML cũng là ngôn ngữ đánh dấu văn bản
   <li>JavacScript không phải ngôn ngữ đánh dấu văn bản
</ul>

Đây là một tài liệu XML không hợp lệ, bởi vì không có thẻ đóng </li> tương ứng với 3 thẻ mở <li>. Mỗi thẻ mở trong một tài liệu XML bắt buộc phải có thẻ đóng.

List HTML hợp lệ trong XML phải như sau:

<ul>
   <li>HTML là ngôn ngữ đánh dấu văn bản</li>
   <li>XML cũng là ngôn ngữ đánh dấu văn bản</li>
   <li>JavacScript không phải ngôn ngữ đánh dấu văn bản</li>
</ul>

Phân tích cú pháp một tài liệu XML

SimpleXML module mới của PHP 5 giúp parse một tài liệu XML một cách đơn giản và tốt. Nó chuyển đổi một tài liệu XML thành một đối tượng mà cung cấp truy cập có tính cấu trúc tới XML.

Để tạo một đối tượng SimpleXML từ một tài liệu XML được lưu giữ trong một chuỗi, truyền chuỗi này tới hàm simplexml_load_string(). Nó trả về một đối tượng XML.

Ví dụ:

Bạn thử ví dụ:

<html>
   <body>
      
      <?php
         $note=<<<XML
         
         <note>
            <to>QTM</to>
            <from>Bạn</from>
            <heading>Hẹn đi ăn</heading>
            <body>Cuối tuần đi nhậu nhé! </body>
         </note>
         
         XML;
         $xml=simplexml_load_string($note);
         print_r($xml);
      ?>
		
   </body>
</html>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php để xem kết quả.

Ghi chú − Bạn có thể sử dụng hàm simplexml_load_file(filename) nếu bạn có nội dung XML trong một file.

Để có danh sách đầy đủ các hàm liên quan tới việc parse tài liệu XML, bạn truy cập: Tổng hợp hàm trong PHP.

Tạo một tài liệu XML

SimpleXML là tốt để parse các tài liệu XML đang tồn tại, nhưng bạn không thể sử dụng nó để tạo một tài liệu mới.

Cách đơn giản nhất để tạo một tài liệu XML là xây dựng một mảng trong PHP mà có cấu trúc phản ánh những gì của tài liệu XML và sau đó duyệt qua mảng đó, in mỗi phần tử với định dạng thích hợp.

Ví dụ

Bạn thử ví dụ:

<?php
   $channel = array('title' => "Thủ thuật công nghệ",
      'link' => 'https://quantrimang.com/',
      'description' => 'Những thủ thuật công nghệ mới, hay nhất.');
   
   print "<channel>\n";
   
   foreach ($channel as $element => $content) {
      print " <$element>";
      print htmlentities($content);
      print "</$element>\n";
   }
   
   print "</channel>";
?>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php để xem kết quả.