Nội Dung Chính
[ VIDEO TUT ]
I. PHP SimpleXML PARSER
SimpleXML là một phần mở rộng của PHP cho phép chúng ta dễ dàng thao tác và nhận dữ liệu XML bằng cách chuyển đổi kiểu dữ liệu dạng chuỗi ban đầu sang dạng đối tượng.
1. Đọc dữ liệu từ một chuỗi
Ta có chuỗi sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $text = '<vietpro> <monhoc> <ten giangvien="tuanhoang">Lập trình PHP cơ bản</ten> <thoigian>3 tháng</thoigian> </monhoc> <monhoc> <ten giangvien="tuanhoang">Lập trình PHP nâng cao</ten> <thoigian>3 tháng</thoigian> </monhoc> <monhoc> <ten giangvien="dangminhtue">Photoshop</ten> <thoigian>1 tháng</thoigian> </monhoc> </vietpro>'; |
Ta sẽ sử dụng hàm simplexml_load_string() để đọc dữ liệu XML từ chuỗi trên
1 2 | $xml = simplexml_load_string($text); print_r($xml); |
2. Đọc dữ liệu từ tập tin XML
Giả sử ta có tập tin test.xml với nội dung bên trong như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="UTF-8"?> <vietpro> <monhoc> <ten giangvien="tuanhoang">Lập trình PHP cơ bản</ten> <thoigian>3 tháng</thoigian> </monhoc> <monhoc> <ten giangvien="tuanhoang">Lập trình PHP nâng cao</ten> <thoigian>3 tháng</thoigian> </monhoc> <monhoc> <ten giangvien="dangminhtue">Photoshop</ten> <thoigian>1 tháng</thoigian> </monhoc> </vietpro> |
Sử dụng hàm simplexml_load_string() để đọc dữ liệu XML từ file test.xml
1 2 | $xml = simplexml_load_file("test.xml"); print_r($xml); |
II. Lấy dữ liệu XML
1. Lấy giá trị từ nodes
Nodes là các thẻ bên trong tập tin XML. Chúng ta sẽ sử dụng dữ liệu trong tập tin test.xml để lấy ví dụ.
a. Lấy giá trị nodes xác định
Tôi sẽ lấy ra tên môn học và thời gian của môn học đầu tiên.
1 2 | echo $xml->monhoc[0]->ten." "; echo $xml->monhoc[0]->thoigian; |
Kết quả nhận được
b. Lấy giá trị của toàn bộ các node
Sử dụng vòng lặp foreach để lấy ra toàn bộ giá trị của các node “ten” .
Các bài học XML đang được cập nhật, các bạn theo dõi nhé.
1 2 3 | foreach($xml->children() as $value){ echo $value->ten."<br>"; } |
Hàm children() sẽ trả về toàn bộ nội dung của các node “monhoc”.
Kết quả thu được:
c. Lấy giá trị của thuộc tính xác định
Tôi sẽ lấy ra giá trị của thuộc tính giangvien trong thẻ <ten> của môn học đầu tiên
1 2 | echo $xml->monhoc[0]->ten['giangvien']; //kết quả hiển thị ra tuanhoang |
d. Lấy giá trị của tất cả các thuộc tính
Sử dụng vòng lặp foreach
1 2 3 4 5 6 7 | foreach($xml->children() as $value){ echo $value->ten['giangvien']."<br>"; } //ket quả thu được //tuanhoang //tuanhoang //dangminhtue |
Các bạn có thể tham khảo các bài viết tiếp theo tại đây:
Tác giả: Đạt Nguyễn Vietpro