Rumah >pembangunan bahagian belakang >tutorial php >Contoh penghuraian dan pemprosesan HTML/XML menggunakan SAX dalam PHP

Contoh penghuraian dan pemprosesan HTML/XML menggunakan SAX dalam PHP

WBOY
WBOYasal
2023-09-08 08:58:43827semak imbas

Contoh penghuraian dan pemprosesan HTML/XML menggunakan SAX dalam PHP

Contoh menghurai dan memproses HTML/XML menggunakan SAX dalam PHP

Ikhtisar:
SAX (API Mudah untuk XML) It ialah penstriman, kaedah penghuraian XML dipacu peristiwa. Ia memproses dokumen XML dengan cara overhed rendah dan sesuai untuk fail XML yang besar. Dalam PHP, kita boleh menggunakan penghurai SAX untuk menghuraikan dan memproses dokumen HTML/XML. Artikel ini akan memperkenalkan contoh cara menggunakan SAX untuk menghuraikan dan memproses dokumen HTML/XML dalam PHP.

Contoh:
Pertimbangkan dokumen HTML berikut sebagai contoh kami:

<html>
<body>
    <h1>Welcome to SAX Parsing</h1>
    <p>This is a paragraph.</p>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
</body>
</html>

Matlamat kami ialah menggunakan penghurai SAX untuk mengekstrak dan mencetak kandungan HTML dokumen. Untuk mencapai matlamat ini, kami akan mencipta kelas yang mewarisi daripada antara muka pengendali SAX PHP DefaultHandler dan mengatasi beberapa kaedahnya untuk mengendalikan acara. Berikut ialah kod sampel:

// 导入PHP的SAX处理类
require_once "XML/SaxParser.php";

// 创建一个继承自DefaultHandler的类
class MySaxHandler extends XML_SaxParser_DefaultHandler {
    private $currentTag = "";

    // 处理元素开始事件
    public function startElement($name, $attrs) {
        $this->currentTag = $name;
    }

    // 处理元素结束事件
    public function endElement($name) {
        // 清空当前标签
        $this->currentTag = "";
    }

    // 处理元素内容事件
    public function characters($data) {
        // 如果当前标签不为空,则打印出内容
        if (!empty($this->currentTag)) {
            echo "Tag: " . $this->currentTag . " - " . $data . PHP_EOL;
        }
    }
}

// 创建一个SAX解析器实例
$saxParser = new XML_SaxParser();

// 创建一个自定义的SAX处理器实例
$mySaxHandler = new MySaxHandler();

// 将SAX处理器实例设置给SAX解析器
$saxParser->setHandler($mySaxHandler);

// 解析HTML文档
$saxParser->parseFile("example.html");

Output:

Tag: h1 - Welcome to SAX Parsing
Tag: p - This is a paragraph.
Tag: li - Item 1
Tag: li - Item 2
Tag: li - Item 3

Dengan contoh di atas, kami mencipta kelas pemproses SAX tersuai MySaxHandler untuk mengendalikan permulaan elemen, penamat elemen dan elemen Peristiwa kandungan. Dalam kaedah startElement, kami merekodkan nama label semasa dalam kaedah endElement, kami mengosongkan nilai label semasa dalam kaedah aksara, kami mencetak label bukan kosong dan kandungannya.

Kemudian, kami mencipta instance parser SAX $saxParser dan instance pemproses SAX tersuai $mySaxHandler, dan menetapkan yang kedua kepada yang pertama. Akhir sekali, kami menggunakan kaedah parseFile $saxParser untuk menghuraikan dokumen HTML.

Kesimpulan:
SAX ialah cara yang cekap untuk menghuraikan dan memproses dokumen XML/HTML. Dalam PHP, kita boleh menggunakan penghurai SAX untuk menghuraikan, memproses dan mengekstrak kandungan dokumen XML/HTML. Dengan mencipta kelas yang mewarisi daripada DefaultHandler dan mengatasi kaedahnya, kami boleh menyesuaikan pengendali untuk mengendalikan pelbagai jenis acara. Artikel ini memberikan contoh asas, dengan harapan dapat membantu pembaca memulakan dengan cepat dan memahami cara menggunakan SAX untuk menghuraikan dan memproses dokumen HTML/XML dalam PHP.

Atas ialah kandungan terperinci Contoh penghuraian dan pemprosesan HTML/XML menggunakan SAX dalam 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