Hướng dẫn PHP XML: Tạo, phân tích cú pháp, đọc bằng ví dụ

⚡ Tóm tắt thông minh

PHP và XML phối hợp với nhau để cấu trúc, lưu trữ và trao đổi dữ liệu giữa các hệ thống. Hướng dẫn này sẽ giải thích về XML, DOM và các trình phân tích cú pháp XML, sau đó trình bày cách đọc một tài liệu XML bằng SimpleXML và cách tạo một tài liệu XML bằng lớp DOMDocument, kết thúc bằng việc chỉ ra khi nào nên sử dụng từng loại.

  • 📄 XML là gì: XML là ngôn ngữ đánh dấu mở rộng, một định dạng dựa trên thẻ cho phép bạn định nghĩa các thẻ tùy chỉnh để cấu trúc và truyền tải dữ liệu.
  • 🌳 DOM: Mô hình Đối tượng Tài liệu (DOM) xem tài liệu XML hoặc HTML như một cây, cho phép mã lập trình điều hướng và chỉnh sửa các nút.
  • 🔄 Trình phân tích cú pháp XML: Trình phân tích cú pháp chuyển đổi tài liệu XML thành đối tượng DOM mà PHP, JavaKịch bản, hoặc Python có thể đọc và thay đổi.
  • ???? Đọc XML: simplexml_load_file tải một tệp vào các đối tượng, vì vậy bạn có thể truy cập các bản ghi bằng cú pháp mũi tên như $xml->record->name.
  • 🛠️ Tạo XML: Lớp DOMDocument xây dựng tài liệu từng nút một bằng cách sử dụng createElement và appendChild, sau đó lưu lại và ghi vào tệp.
  • ⚖️ SimpleXML so với DOM: SimpleXML đọc dữ liệu nhanh, trong khi DOMDocument phù hợp cho việc tạo đối tượng chính xác và thao tác phức tạp.
  • 🤖 Hỗ trợ AI: Các công cụ AI có thể tạo mã phân tích cú pháp cho một cấu trúc XML cụ thể và chuyển đổi giữa XML, JSON và mảng PHP.

PHP và XML

XML là gì?

XML là từ viết tắt của Ngôn ngữ đánh dấu mở rộng.

XML được sử dụng để cấu trúc, lưu trữ và truyền tải dữ liệu từ hệ thống này sang hệ thống khác.

XML tương tự như HTML. Nó sử dụng thẻ mở và thẻ đóng. Tuy nhiên, khác với HTML, XML cho phép người dùng định nghĩa các thẻ riêng của mình.

DOM là gì?

DOM là từ viết tắt của Mô hình đối tượng tài liệu.

Đây là một tiêu chuẩn đa nền tảng và không phụ thuộc ngôn ngữ, định nghĩa cách truy cập và thao tác dữ liệu trong:

  • HTML
  • XHTML
  • XML

DOM XML được sử dụng để truy cập và thao tác các tài liệu XML. Nó xem tài liệu XML như một cấu trúc cây.

Trình phân tích cú pháp XML

Trình phân tích cú pháp XML là một chương trình dịch tài liệu XML thành một đối tượng Mô hình Đối tượng Tài liệu XML (DOM).

Sau đó, đối tượng XML DOM có thể được thao tác bằng cách sử dụng JavaKịch bản, Python, PHP và các ngôn ngữ khác.

Từ khóa CDATA, viết tắt của (unparsed) Character Data (Dữ liệu ký tự chưa được phân tích), được sử dụng để bỏ qua các ký tự đặc biệt như “<” và “>” khi phân tích tài liệu XML.

Tại sao nên sử dụng XML?

  • Các dịch vụ web như SOAP và REST sử dụng định dạng XML để trao đổi thông tin. Việc hiểu XML là gì và cách thức hoạt động của nó sẽ mang lại cho bạn lợi thế cạnh tranh với tư cách là một nhà phát triển, vì các ứng dụng hiện đại sử dụng rất nhiều dịch vụ web.
  • Tài liệu XML có thể được sử dụng để lưu trữ các thiết lập cấu hình của một ứng dụng.
  • Nó cho phép bạn tạo các thẻ tùy chỉnh của riêng mình, điều này làm cho nó linh hoạt hơn.

Ví dụ về Tài liệu XML

Giả sử bạn đang phát triển...ping Một ứng dụng lấy dữ liệu từ dịch vụ web ở định dạng XML.

Dưới đây là một ví dụ về cấu trúc của tài liệu XML.

<?xml version="1.0" encoding="utf-8"?>
<employees status = "ok">
<record man_no = "101">
<name>Joe Paul</name>
<position>CEO</position>
</record>
<record man_no = "102">
<name>Tasha Smith</name>
<position>Finance Manager</position>
</record>
</employees>

ĐÂY,

  • “ "Chỉ định phiên bản XML và mã hóa sẽ được sử dụng"
  • “ ” là phần tử gốc.
  • “ … “ là các phần tử con, mỗi phần tử tương ứng với một hồ sơ nhân viên.”

Cách đọc XML bằng PHP

Bây giờ chúng ta hãy viết mã để đọc tài liệu XML về nhân viên và hiển thị kết quả trên trình duyệt web. index.php

<?php
$xml = simplexml_load_file('employees.xml');
echo '<h2>Employees Listing</h2>';
$list = $xml->record;
for ($i = 0; $i < count($list); $i++) {
echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>';
echo 'Name: ' . $list[$i]->name . '<br>';
echo 'Position: ' . $list[$i]->position . '<br><br>';
}
?>

ĐÂY,

  • Câu lệnh “$xml = simplexml_load_file('employees.xml');” sử dụng hàm simplexml_load_file để tải tệp có tên employees.xml và gán nội dung của tệp đó cho biến $xml.
  • “$list = $xml->record;” lấy nội dung của các nút bản ghi.
  • “for ($i = 0; $i < count(…)…” là vòng lặp for đọc mảng và xuất ra kết quả.
  • “$list[$i]->attributes()->man_no;” đọc thuộc tính man_no của phần tử
  • “$list[$i]->name;” đọc giá trị của phần tử con tên
  • “$list[$i]->position;” đọc giá trị của phần tử con vị trí

Kiểm tra trình đọc XML

Giả sử bạn đã lưu tệp index.php trong thư mục phptuts/xml, hãy truy cập vào đường dẫn sau: URL http://localhost/phptuts/xml/index.php

Đọc XML bằng PHP

Cách tạo tài liệu XML bằng PHP

Bây giờ chúng ta sẽ xem cách tạo một tài liệu XML bằng PHP.

Đoạn mã sau sử dụng lớp DOMDocument tích hợp sẵn của PHP để tạo tài liệu XML.

<?php

$dom = new DOMDocument();

$dom->encoding = 'utf-8';

$dom->xmlVersion = '1.0';

$dom->formatOutput = true;

$xml_file_name = 'movies_list.xml';

$root = $dom->createElement('Movies');

$movie_node = $dom->createElement('movie');

$attr_movie_id = new DOMAttr('movie_id', '5467');

$movie_node->setAttributeNode($attr_movie_id);

$child_node_title = $dom->createElement('Title', 'The Campaign');

$movie_node->appendChild($child_node_title);

$child_node_year = $dom->createElement('Year', 2012);

$movie_node->appendChild($child_node_year);

$child_node_genre = $dom->createElement('Genre', 'Comedy');

$movie_node->appendChild($child_node_genre);

$child_node_ratings = $dom->createElement('Ratings', 6.2);

$movie_node->appendChild($child_node_ratings);

$root->appendChild($movie_node);

$dom->appendChild($root);

$dom->save($xml_file_name);

echo "$xml_file_name has been successfully created";
?>

ĐÂY,

  • “$dom = new DOMDocument();” tạo ra một thể hiện của lớp DOMDocument.
  • “$dom->encoding = 'utf-8';” đặt mã hóa tài liệu thành utf-8
  • “$dom->xmlVersion = '1.0';” chỉ định số phiên bản 1.0
  • “$dom->formatOutput = true;” đảm bảo rằng đầu ra được định dạng tốt
  • “$root = $dom->createElement('Phim');” tạo nút gốc có tên Phim
  • “$attr_movie_id = new DOMAttr('movie_id', '5467');” định nghĩa thuộc tính movie_id của nút phim.
  • “$dom->createElement('ElementName', 'ElementValue')” tạo một nút con. ElementName chỉ định tên của phần tử, ví dụ: Title. ElementValue đặt giá trị cho nút con, ví dụ: The Campaign.
  • “$root->appendChild($movie_node);” thêm nút phim vào nút gốc Movies
  • “$dom->appendChild($root);” nối thêm nút gốc vào tài liệu XML.
  • “$dom->save($xml_file_name);” lưu tệp XML vào thư mục gốc của máy chủ web.
  • “echo “$xml_file_name đã được tạo thành công”;” hiển thị thông báo thành công.

Kiểm tra XML Creator

Giả sử bạn đã lưu tệp create_movies_list.php trong thư mục phptuts/xml, hãy truy cập vào đường dẫn sau: URL http://localhost/phptuts/xml/create_movies_list.php

Tạo một tài liệu XML bằng PHP

Mở tệp movies_list.xml.

Tạo một tài liệu XML bằng PHP

SimpleXML so với DOMDocument

PHP cung cấp hai cách chính để làm việc với XML. SimpleXML là lựa chọn tốt nhất khi bạn chủ yếu cần đọc dữ liệu, trong khi DOMDocument cung cấp khả năng kiểm soát chi tiết hơn để xây dựng và chỉnh sửa tài liệu chuyên sâu. Bảng dưới đây so sánh chúng.

Yếu tố SimpleXML DOMTài liệu
Dễ sử dụng Rất đơn giản; tài liệu hoạt động như các đối tượng lồng nhau. API dựa trên nút, chi tiết hơn
Tốt nhất cho Đọc và chỉnh sửa sơ lược Tạo tài liệu và thao tác phức tạp
Phong cách truy cập $xml->record->name createElement() và appendChild()
Hỗ trợ XPath Vâng, thông qua ->xpath() Vâng, thông qua lớp DOMXPath.

Một nguyên tắc thực tế là nên sử dụng SimpleXML trước tiên để đọc các nguồn cấp dữ liệu và các tệp đơn giản, và chuyển sang DOMDocument khi bạn cần tạo tài liệu, chèn các nút vào các vị trí cụ thể hoặc xác thực dựa trên lược đồ.

Câu Hỏi Thường Gặp

Cả hai đều lưu trữ dữ liệu có cấu trúc, nhưng XML sử dụng thẻ và hỗ trợ thuộc tính, chú thích và lược đồ, trong khi JSON nhẹ hơn và ánh xạ trực tiếp đến mảng và đối tượng. JSON thường được sử dụng cho API; XML phù hợp với tài liệu và cấu hình.

Tải tệp bằng SimpleXML hoặc DOMDocument, thay đổi giá trị hoặc thuộc tính của nút, sau đó ghi lại. Với SimpleXML, chỉnh sửa thuộc tính và gọi asXML('file.xml'); với DOMDocument, chỉnh sửa nút và gọi save().

XPath là ngôn ngữ truy vấn dùng để chọn các nút trong tài liệu XML. Trong PHP, hãy gọi `$xml->xpath('//record/name')` với SimpleXML hoặc sử dụng lớp `DOMXPath` để lấy các phần tử phù hợp mà không cần tìm kiếm.ping Xuyên suốt toàn bộ cây.

Đúng vậy. AI có thể tạo mã bằng cách sử dụng simplexml_load_string, json_encode và json_decode để chuyển đổi giữa các định dạng và đánh dấu dữ liệu không khớp chính xác, chẳng hạn như thuộc tính XML hoặc nội dung hỗn hợp. Hãy kiểm tra kết quả.

Có. Hãy dán một đoạn XML mẫu của bạn, và AI có thể tạo ra mã SimpleXML hoặc DOMDocument đọc chính xác các phần tử và thuộc tính bạn cần, bao gồm cả vòng lặp cho các bản ghi lặp lại. Hãy kiểm tra nó với các tệp thực tế.

Tóm tắt bài viết này với: