Rumah >pembangunan bahagian belakang >tutorial php >Dari awal hingga akhir: Cara menghuraikan fail XML menggunakan penghurai XML lanjutan php

Dari awal hingga akhir: Cara menghuraikan fail XML menggunakan penghurai XML lanjutan php

WBOY
WBOYasal
2023-07-28 11:51:211168semak imbas

Dari awal hingga akhir: Cara menghuraikan fail XML menggunakan php extended XML parser

XML (Extensible Markup Language) ialah format biasa untuk menyimpan dan menghantar data. Untuk memanipulasi dan memproses fail XML, kami boleh menggunakan sambungan terbina dalam yang disediakan oleh PHP, salah satunya ialah sambungan penghurai XML. Artikel ini akan memperkenalkan cara menggunakan sambungan penghurai XML PHP untuk menghuraikan fail XML.

  1. Pasang Sambungan Penghurai XML PHP

Pertama, kami perlu memastikan bahawa Sambungan Penghurai XML PHP dipasang dalam persekitaran PHP kami. Anda boleh menyemak ini dengan menjalankan arahan berikut dalam terminal atau command prompt:

php -m | grep xml

Arahan di atas akan menyenaraikan semua sambungan yang dipasang dalam persekitaran PHP dan menyemak sama ada ia mengandungi xml. Jika hasilnya mengandungi xml, penghurai XML telah dipasang.

Jika ia tidak dipasang, anda boleh memasangnya di Linux dengan mengikuti langkah berikut:

sudo apt-get update
sudo apt-get install php-xml

Memasangnya pada Windows boleh dicapai dengan mengedit fail php.ini dan menyahkomen baris berikut (jika ia belum dinyahkomen):

extension=php_xml.dll
extension=php_dom.dll
  1. Buat fail XML

Seterusnya, kita perlu mencipta fail XML untuk operasi penghuraian. Fail XML mudah boleh dibuat menggunakan mana-mana editor teks seperti yang ditunjukkan di bawah:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name>John Doe</name>
    <age>30</age>
    <email>john.doe@example.com</email>
</root>

Simpan kandungan di atas sebagai fail sample.xml.

  1. Menghuraikan fail XML menggunakan penghurai XML

Terdapat dua cara untuk menghuraikan fail XML menggunakan penghurai XML PHP: penghuraian berasaskan peristiwa dan penghuraian berasaskan pepohon. Kami akan membincangkan kedua-dua kaedah secara berasingan.

(1) Penghuraian berasaskan peristiwa

Penghuraian berasaskan peristiwa ialah kaedah penghuraian penstriman yang akan membaca peristiwa fail XML mengikut peristiwa dan mencetuskan pengendali acara yang sepadan. Berikut ialah kod contoh penghuraian berasaskan peristiwa:

<?php
function startElement($parser, $name, $attrs) {
    // 处理元素的开始标签事件
}

function endElement($parser, $name) {
    // 处理元素的结束标签事件
}

function characterData($parser, $data) {
    // 处理元素的文本数据事件
}

// 创建解析器
$parser = xml_parser_create();

// 设置事件处理程序
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

// 打开XML文件进行解析
$file = fopen("sample.xml", "r");

while ($data = fread($file, 4096)) {
    // 解析数据
    xml_parse($parser, $data, feof($file));
}

// 释放解析器
xml_parser_free($parser);
fclose($file);
?>

Dalam kod di atas, kami mencipta penghurai XML menggunakan fungsi xml_parser_create() dan menetapkan pengendali acara yang sepadan menggunakan fungsi xml_set_element_handler() dan fungsi xml_set_character_data_handler(). Kami kemudian membuka fail sample.xml dan menggunakan gelung sementara untuk menghantar kandungan fail ke blok parser demi blok untuk dihuraikan. Akhir sekali, kami membebaskan parser menggunakan fungsi xml_parser_free().

Sila ambil perhatian bahawa dalam kod sampel kami hanya menentukan nama fungsi untuk mengendalikan pelbagai acara, tanpa pelaksanaan khusus. Dalam aplikasi praktikal, kita boleh menulis logik pemprosesan kita sendiri dalam fungsi ini mengikut keperluan.

(2) Penghuraian berasaskan pokok

Penghuraian berasaskan pokok ialah kaedah menghuraikan keseluruhan dokumen XML ke dalam struktur pepohon, dan nilai elemen dan atribut XML boleh diperolehi dengan merentasi pepohon. Berikut ialah kod sampel penghuraian berasaskan pokok:

<?php
// 创建DOM对象
$dom = new DOMDocument();

// 加载XML文件
$dom->load("sample.xml");

// 获取根元素
$root = $dom->documentElement;

// 遍历根元素的子元素
foreach ($root->childNodes as $node) {
    if ($node->nodeType === XML_ELEMENT_NODE) {
        // 处理XML元素
        echo "Element: " . $node->nodeName . "
";

        // 遍历元素的属性
        if ($node->hasAttributes()) {
            foreach ($node->attributes as $attr) {
                // 处理属性
                echo "Attribute: " . $attr->nodeName . " = " . $attr->nodeValue . "
";
            }
        }

        // 处理元素的文本值
        echo "Text: " . $node->textContent . "
";
    }
}
?>

Dalam kod di atas, kami mencipta objek DOM menggunakan kelas DOMDocument dan memuatkan fail sample.xml menggunakan kaedah load()nya. Kami kemudian mendapatkan elemen akar dengan mengakses sifat documentElement dan menggunakan gelung traversal untuk mengakses elemen anak elemen akar. Dalam gelung, kami menentukan sama ada jenis nod ialah nod elemen XML, dan jika ya, keluarkan nama elemen, atribut dan nilai teks.

  1. Jalankan kod

Akhir sekali, kita boleh menjalankan kod contoh di atas menggunakan baris arahan:

php parse-xml.php

Sebagai alternatif, kita boleh menyimpan kod sebagai fail parse-xml.php dan mengakses fail melalui pelayar. Selepas menjalankan kod pada baris arahan atau dalam penyemak imbas, kita sepatutnya dapat melihat output elemen XML, atribut dan nilai teks yang dihuraikan.

Dengan langkah dalam artikel ini, kami boleh menggunakan sambungan penghurai XML PHP dengan mudah untuk menghuraikan fail XML. Sama ada penghuraian berasaskan peristiwa atau penghuraian berasaskan pepohon, kaedah ini boleh membantu kami memproses data XML dengan lebih mudah. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Dari awal hingga akhir: Cara menghuraikan fail XML menggunakan penghurai XML lanjutan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn