Hướng dẫn php xml library - thư viện phpxml

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>value>
    <date>2019-12-08 05:05:05date>
  email>
  <email>
    <value>value>
    <date>2019-12-09 06:06:06date>
  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('')) { // Kiểm tra email tồn tại
        write_email(''); // 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']."
"
; } } if (check_email('')) { // Kiểm tra email tồn tại delete_email(''); // Xóa email } ?>

Kết quả:

thêm ngày 2019-12-08 05:05:05 thêm ngày 2019-12-09 06:06:06 thêm ngày 2020-09-06 07:00:01 
thêm ngày 2019-12-09 06:06:06
thêm ngày 2020-09-06 07:00:01