PHP XML Expat

Penghurai Ekspat XML PHP

XML ialah format fail separa berstruktur popular yang menyimpan data dalam format seperti pangkalan data. Dalam aplikasi praktikal, beberapa data mudah dan rendah keselamatan sering disimpan dalam format fail XML. Kelebihan ini ialah di satu pihak, ia boleh meningkatkan kecekapan membaca dengan mengurangkan operasi interaktif dengan pangkalan data, dan sebaliknya, ia boleh menggunakan kelebihan XML secara berkesan untuk mengurangkan kesukaran menulis program.

Penghurai Expat terbina dalam membolehkan anda memproses dokumen XML dalam PHP.

Apakah itu XML?

XML ialah singkatan daripada "Bahasa Penanda eXtensible" dan merupakan bahasa penanda yang serupa dengan HTML. Tetapi tidak seperti HTML, XML digunakan terutamanya untuk menerangkan data dan menyimpan data, manakala HTML digunakan terutamanya untuk memaparkan data.

XML digunakan untuk menerangkan data, dengan tumpuan diberikan pada data itu. Fail XML menerangkan struktur data.

Dalam XML, tiada teg pratakrif. Anda mesti menentukan tag anda sendiri.

Contohnya:

   <?xml version="1.0"?>
        <threads>
            <thread>
                <title>Welcome </title>
                <author>Simon </author>
                <content>Welcome to XML guestbook!! </content>
             <thread>
        </threads>

Di bahagian atas fail XML, <?xml version="1.0"?> biasanya digunakan untuk mengenal pasti permulaan data XML dan penggunaan data XML maklumat Versi standard.

teg<benang> dan <benang> Terdapat tajuk, pengarang dan kandungan dalam mesej, yang sepenuhnya menyatakan mesej mesej.

Untuk mengetahui lebih lanjut tentang XML, lawati tutorial XML kami.

Apakah Expat?

Untuk membaca dan mengemas kini - mencipta dan memproses - dokumen XML, anda memerlukan penghurai XML.

Terdapat dua jenis asas penghurai XML:

1. Penghurai berasaskan pokok: Penghurai ini menukar dokumen XML kepada struktur pepohon. Ia menganalisis keseluruhan dokumen dan menyediakan akses kepada elemen dalam pepohon, seperti Model Objek Dokumen (DOM).

2. Penghurai berasaskan acara: Anggap dokumen XML sebagai satu siri acara. Apabila peristiwa tertentu berlaku, penghurai memanggil fungsi untuk mengendalikannya.

Penghuraikan Expat ialah penghurai berasaskan peristiwa.

Penghurai berasaskan acara memfokuskan pada kandungan dokumen XML, bukannya strukturnya. Oleh sebab itu, penghurai berasaskan peristiwa dapat mengakses data lebih cepat daripada penghurai berasaskan pepohon.

Sila lihat serpihan XML berikut:

<from>Jani</from>

Penghurai berasaskan acara melaporkan XML di atas Untuk urutan tiga peristiwa:

elemen mula: dari

mulakan bahagian CDATA, nilai: Jani

elemen tutup: daripada

contoh XML di atas Mengandungi dengan baik -terbentuk XML. Walau bagaimanapun, tika ini adalah XML tidak sah kerana tiada pengisytiharan jenis dokumen (DTD) dikaitkan dengannya.

Walau bagaimanapun, ini tiada perbezaan apabila menggunakan penghurai Expat. Expat ialah penghurai yang tidak menyemak kesahihan dan mengabaikan sebarang DTD.

Sebagai penghurai XML berasaskan acara dan tidak disahkan, Expat adalah pantas dan ringan, menjadikannya sesuai untuk aplikasi web PHP.

Nota: Dokumen XML mesti dibentuk dengan baik, jika tidak Expat akan menjana ralat.

Pemasangan

Fungsi penghurai Expat XML ialah bahagian penting teras PHP. Tiada pemasangan diperlukan untuk menggunakan fungsi ini.

Fail XML

Fail XML berikut akan digunakan dalam contoh kami:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


Memulakan penghurai XML

Kita perlu memulakan penghurai XML dalam PHP, mentakrifkan pengendali untuk acara XML yang berbeza dan kemudian menghuraikan fail XML .

Instance

<?php
//初始化XML解析器
$parser=xml_parser_create();
//在元素开始时使用的函数
function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
//函数结束时使用的函数
function stop($parser,$element_name)
{
echo "<br>";
}
//查找字符数据时使用的函数
function char($parser,$data)
{
echo $data;
}
//指定元素的处理
xml_set_element_handler($parser,"start","stop");
//指定数据处理程序
xml_set_character_data_handler($parser,"char");
//打开XML文件
$fp=fopen("test.xml","r");
//读取数据
while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or 
die (sprintf("XML Error: %s at line %d", 
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
//释放内存
xml_parser_free($parser);
?>

Kod di atas akan mengeluarkan:

-- Nota --
Kepada: Tove
Daripada: Jani
Tajuk : Peringatan
Mesej: Jangan lupakan saya hujung minggu ini!

Prinsip kerja:

1 Mulakan penghurai XML melalui fungsi xml_parser_create()

<🎜. >2 . Cipta fungsi yang sepadan dengan pengendali acara yang berbeza

3 Tambahkan fungsi xml_set_element_handler() untuk menentukan fungsi yang hendak dilaksanakan apabila penghurai menemui teg permulaan dan penamat

4. ) untuk menentukan fungsi yang hendak dilaksanakan apabila penghurai menemui data aksara

5 Gunakan fungsi xml_parse() untuk menghuraikan fail "test.xml"

6. tambahkan fungsi xml_error_string() untuk menukar ralat XML kepada huraian teks

7. Panggil fungsi xml_parser_free() untuk melepaskan memori yang diperuntukkan kepada fungsi xml_parser_create()

Maklumat lanjut tentang PHP Expat. parser

Untuk mengetahui lebih lanjut tentang fungsi PHP Expat, sila lawati Manual Rujukan Penghurai PHP XML kami.


Meneruskan pembelajaran
||
<?php //初始化XML解析器 $parser=xml_parser_create(); //在元素开始时使用的函数 function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //函数结束时使用的函数 function stop($parser,$element_name) { echo "<br>"; } //查找字符数据时使用的函数 function char($parser,$data) { echo $data; } //指定元素的处理 xml_set_element_handler($parser,"start","stop"); //指定数据处理程序 xml_set_character_data_handler($parser,"char"); //打开XML文件 $fp=fopen("test.xml","r"); //读取数据 while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //释放内存 xml_parser_free($parser); ?>
  • Cadangan kursus
  • Muat turun perisian kursus