Chuyển đổi XML thành Mảng liên kết trong PHP

Convert Xml Associative Array Php



XML (Ngôn ngữ đánh dấu có thể mở rộng) là một loại ngôn ngữ đánh dấu được sử dụng để lưu trữ dữ liệu ở định dạng con người có thể đọc được. Nó khác với các ngôn ngữ đánh dấu khác. Mọi thẻ của ngôn ngữ này đều do người dùng xác định. Sử dụng XML là giải pháp tốt hơn để lưu trữ một lượng nhỏ dữ liệu khi bạn không muốn sử dụng bất kỳ cơ sở dữ liệu nào để lưu trữ dữ liệu. Dữ liệu từ tài liệu XML có thể dễ dàng được truy cập và sử dụng trong bất kỳ ứng dụng web nào bằng cách sử dụng tập lệnh PHP. Cách tài liệu XML có thể được phân tích cú pháp và lưu trữ thành một mảng kết hợp được trình bày trong hướng dẫn này.

Các chức năng cần thiết

Một số hàm tích hợp được sử dụng để chuyển đổi nội dung XML thành một mảng PHP liên kết. Mục đích của các chức năng khác nhau được giải thích dưới đây.







file_get_contents ():



Hàm này trả về dữ liệu chuỗi bằng cách chuyển đổi bất kỳ dữ liệu XML nào. Nó lấy bất kỳ tên tệp XML nào làm đối số.



simplexml_load_string ():





Hàm này trả về đối tượng XML bằng cách chuyển đổi dữ liệu chuỗi XML. Nó lấy dữ liệu chuỗi XML làm đối số.

simplexml_load_file ():



Hàm này trả về đối tượng XML bằng cách chuyển đổi nội dung tệp XML. Nó lấy tên tệp XML làm đối số.

SimpleXMLElement ():

Nó được sử dụng để tạo một đối tượng XML từ dữ liệu XML. Nó lấy giá trị nội dung XML làm đối số.

json_encode ():

Nó trả về đối tượng JSON bằng cách chuyển đổi đối tượng XML. Nó lấy biến đối tượng XML làm đối số.

json_decode ():

Nó trả về mảng PHP liên kết bằng cách chuyển đổi dữ liệu JSON. Nó lấy biến đối tượng JSON làm đối số.

Tạo tệp XML

Bạn sẽ được yêu cầu tạo tệp XML hoặc xác định dữ liệu XML trong tập lệnh để biết cách chuyển đổi dữ liệu XML thành một mảng PHP liên kết. Tạo một tệp XML có tên Course.xml với nội dung sau và lưu trữ nó ở vị trí chứa tập lệnh PHP. Tệp chứa các phần tử con dưới phần tử mẹ. Vì vậy, một mảng kết hợp hai chiều sẽ tạo ra sau khi chuyển đổi tệp XML sau thành một mảng PHP.

Course.xml

phiên bản='1.0'?>
>
>Lập trình Web>
>6 tháng>
>
>
>Niềm vui của lập trình PHP>
>Alan Forbes>
>Đảo mận>
>
>
>PHP& MySQL Novice to Ninja
Tom Butler và Kevin Yank
SitePoint


Đầu tiên về PHP & MySQL
Lynn Beighley và Michael Morrison
O’Reilly


Ví dụ-1: Chuyển đổi nội dung tệp XML thành một mảng kết hợp mà không kiểm tra lỗi

Tập lệnh sau cho thấy việc sử dụng các hàm file_get_contents () và simplexml_load_string () để tạo đối tượng XML. Ở đây, tệp khóa học.xml được sử dụng để chuyển đổi đã được tạo trước đó. Tiếp theo, hàm json_encode () và json_decode () được sử dụng để lấy mảng kết hợp sau khi chuyển đổi nội dung tệp XML. Nếu không có lỗi nào tồn tại trong nội dung XML, thì tập lệnh sau sẽ không hiển thị lỗi. Đây,

  được sử dụng để in mảng theo cách được định dạng.



// Xác định tệp XML hiện có
$ xml = 'Course.xml';

// Đọc toàn bộ nội dung của tệp XML dưới dạng chuỗi XML
$ xmlData = file_get_contents ($ xml);

// Chuyển đổi dữ liệu chuỗi XML thành đối tượng XML
$ xmlObject = simplexml_load_string ($ xmlData);

// Chuyển đổi đối tượng XML thành đối tượng JSON
$ jsonObject = json_encode ($ xmlObject);

// Chuyển đổi đối tượng JSON thành một mảng kết hợp
$ assArray = json_decode ($ jsonObject, thật);

// In cấu trúc của mảng kết hợp
quăng đi '

';  
print_r ($assArray);
echo '

'
;

?>

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực thi tập lệnh PHP. Ở đây, một mảng hai chiều được tạo dựa trên nội dung của tệp XML, Course.xml.

Ví dụ-2: Chuyển đổi nội dung tệp XML thành một mảng kết hợp có kiểm tra lỗi

Tốt hơn là nên kiểm tra lỗi khi chuyển đổi XML thành một mảng kết hợp. Nó sẽ giúp lập trình viên gỡ lỗi mã nếu việc kiểm tra lỗi được thực hiện trong tập lệnh. Tập lệnh sau đây cho thấy các cách để chuyển đổi nội dung tệp XML thành một mảng kết hợp bằng cách sử dụng hàm simplexml_load_file () có xử lý lỗi. Hàm libxml_use_internal_errors () được sử dụng với giá trị TRUE để cho phép xử lý lỗi. Nếu nội dung tệp XML được sử dụng trong tập lệnh có bất kỳ lỗi nào thì hàm simplexml_load_file () sẽ trả về false và thông báo lỗi sẽ được in bằng cách sử dụng hàm libxml_get_errors (). Nếu không có lỗi nào tồn tại trong tệp XML, thì nội dung của tệp sẽ chuyển đổi đúng thành một mảng kết hợp hai chiều.



// Cho phép xử lý lỗi người dùng
libxml_use_internal_errors (THẬT);

// Tạo đối tượng XML
$ objXml = simplexml_load_file ('Course.xml');

// Lỗi in nếu đối tượng XML trả về false
nếu như ($ objXml === SAI) {
quăng đi 'Đã xảy ra lỗi khi phân tích cú pháp tệp XML. ';
cho mỗi( libxml_get_errors () như $ error) {
quăng đi $ error->thông điệp;
}
lối ra ;
}

// Chuyển đổi đối tượng XML thành đối tượng JSON
$ objJson = json_encode ($ objXml);
// Chuyển đổi đối tượng JSON thành một mảng kết hợp
$ assarr = json_decode ($ objJson, THẬT);

// In cấu trúc của mảng kết hợp
quăng đi '
';  
print_r ($assarr);
echo '
'
;

?>

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực thi tập lệnh PHP. Ở đây, không có lỗi nào tồn tại trong tệp XML. Vì vậy, một mảng hai chiều đã được tạo ra giống như ví dụ trước dựa trên nội dung của tệp XML, Course.xml.

Ví dụ-3: Chuyển đổi nội dung XML thành một mảng kết hợp

Tập lệnh sau đây cho thấy cách chuyển đổi dữ liệu XML thành một mảng kết hợp bằng cách sử dụng hàm SimpleXMLElement (). Trong tập lệnh, nội dung XML được lưu trữ trong một biến có tên $ xml được sử dụng làm đối số của hàm, SimpleXMLElement (). Tiếp theo, hàm json_encode () và json_decode () được sử dụng để lấy mảng kết hợp sau khi chuyển đổi nội dung tệp XML.



// Xác định biến XML
$ xml = <<


[email được bảo vệ]

12 / A, Dhanmondi
Dhaka



[email được bảo vệ]

156, Motif
Dhaka



[email được bảo vệ]

21 / B, Mogbazar
Dhaka



XML
;

// Tạo đối tượng XML
$ xmlObject = MớiSimpleXMLElement($ xml);
// Tạo đối tượng JSON
$ jsonObject = json_encode ($ xmlObject);
// Chuyển đổi đối tượng JSON thành một mảng kết hợp
$ assArray = json_decode ($ jsonObject, thật);

// In cấu trúc của mảng kết hợp
quăng đi '
';  
print_r ($assArray);
echo '
'
;

?>

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực thi tập lệnh PHP. Ở đây, một mảng hai chiều được tạo dựa trên nội dung của biến XML, $ xml.

Phần kết luận:

Có ba cách khác nhau để chuyển đổi nội dung XML thành một mảng kết hợp được trình bày trong hướng dẫn này. Điều này sẽ giúp người đọc biết cách làm việc với dữ liệu XML và phân tích cú pháp dữ liệu từ nội dung XML bằng cách sử dụng tập lệnh PHP một cách dễ dàng.