PHP: Đọc dữ liệu XML trong PHP
Bài viết này sẽ hướng dẫn bạn cách đọc dữ liệu XML trong PHP.
Ví dụ kiểm tra, thêm, xóa, lấy địa chỉ email từ XML. Các file dưới đây nằm trong cùng thư mục.
File emails.xml
<?xml version="1.0"?> <emails> <email> <value>email1@email.com</value> <date>2019-12-08 05:05:05</date> </email> <email> <value>email2@email.com</value> <date>2019-12-09 06:06:06</date> </email> </emails>
File proccess.php
<?php /* * Kiểm tra email tồn tại */ function check_email($email, $url = 'emails.xml') { $doc = new DOMDocument('1.0'); $doc->load($url); $emails = $doc->getElementsByTagName('email'); foreach ($emails as $e) { $val = $e->getElementsByTagName('value'); if ($email == $val->item(0)->nodeValue) { return true; } } return false; } /* * Thêm email */ function write_email($email, $url = 'emails.xml') { $xml = simplexml_load_file($url); $entry = $xml->addChild('email'); $entry->addChild('value', $email); $entry->addChild('date', date('Y-m-d H:i:s', time())); $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $doc->preserveWhiteSpace = true; $doc->loadXML($xml->asXML(), LIBXML_NOBLANKS); $doc->save($url); } /* * Lấy danh sách email */ function get_emails($url = 'emails.xml') { $doc = new DOMDocument('1.0'); $doc->load($url); $emails = $doc->getElementsByTagName('email'); $email_list = []; foreach ($emails as $e) { $val = $e->getElementsByTagName('value'); $dat = $e->getElementsByTagName('date'); $email_list[] = array( 'email' => $val->item(0)->nodeValue, 'date' => $dat->item(0)->nodeValue, ); } return $email_list; } /* * Xóa email */ function delete_email($email, $url = 'emails.xml') { $doc = new DOMDocument('1.0'); $doc->load($url); $the_document = $doc->documentElement; $emails = $the_document->getElementsByTagName('email'); $node = null; foreach ($emails as $e) { $val = $e->getElementsByTagName('value'); if ($email == $val->item(0)->nodeValue) { $node = $e; break; } } if ($node != null) { $the_document->removeChild($node); } $doc->save($url); } //Tiến hành thực thi if (!check_email('email3@email.com')) { // Kiểm tra email tồn tại write_email('email3@email.com'); // Thêm email } $data = get_emails(); if ($data) { foreach ($data as $row) { // Xuất danh sách email echo $row['email']; echo ' thêm ngày '; echo $row['date']."<br>"; } } if (check_email('email3@email.com')) { // Kiểm tra email tồn tại delete_email('email3@email.com'); // Xóa email } ?>
Kết quả:
email1@email.com thêm ngày 2019-12-08 05:05:05
email2@email.com thêm ngày 2019-12-09 06:06:06
email3@email.com thêm ngày 2020-09-06 07:00:01