پی ایچ پی ایکس ایم ال ایکسپات پارسیکر
内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能。
什么是 XML?
XML ਕੀ ਹੈ?
XML ਵਿੱਚ ਕੋਈ ਪ੍ਰਿਵਾਰਿਤ ਟੈਗ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ ਆਪਣੇ ਟੈਗ ਨਿਰਧਾਰਿਤ ਕਰਨਾ ਹੋਵੇਗਾ。
ਜੇਕਰ ਤੁਸੀਂ XML ਬਾਰੇ ਜਾਣਕਾਰੀ ਹੋਣੀ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਸਾਡੇ ایکسمل تعلیم。
Expat ਕੀ ਹੈ?
XML ਨੂੰ ਪੜ੍ਹਨ ਅਤੇ ਅੱਪਡੇਟ ਕਰਨ - ਬਣਾਓ ਅਤੇ ਪ੍ਰਬੰਧਨ ਕਰੋ - ਇੱਕ XML ਦਸਤਾਵੇਜ਼ ਲਈ ਤੁਹਾਨੂੰ XML ਪਾਰਸਰ ਚਾਹੀਦਾ ਹੈ。
ਬੇਸਿਕ ਦੋ ਪ੍ਰਕਾਰ ਦੇ XML ਪਾਰਸਰ ਹਨ:
- ਟਰੀ ਅਧਾਰਿਤ ਪਾਰਸਰਸ਼ਬਦਾਂ ਵਿੱਚ: ਇਹ ਪਾਰਸਰ XML ਦਸਤਾਵੇਜ਼ ਨੂੰ ਟਰੀ ਸਰਕਟਰ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਇਹ ਸਮੁੱਚਾ ਦਸਤਾਵੇਜ਼ ਵਿਚਾਰ ਕਰਦਾ ਹੈ ਅਤੇ API ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਤਾਂ ਕਿ ਟਰੀ ਵਿੱਚ ਦਾਇਰਾ ਪਹੁੰਚਾਇਆ ਜਾ ਸਕੇ ਜਿਵੇਂ ਕਿ ਡੌਕੂਮੈਂਟ ਓਬਜੈਕਟ ਮਾਡਲ (DOM)।
- ਈਵੈਂਟ ਅਧਾਰਿਤ ਪਾਰਸਰਸ਼ਬਦਾਂ ਵਿੱਚ: XML ਦਸਤਾਵੇਜ਼ ਨੂੰ ਈਵੈਂਟਾਂ ਦੀ ਲੜੀ ਵਜੋਂ ਦੇਖੋ। ਜਦੋਂ ਕੋਈ ਵਿਸ਼ੇਸ਼ ਈਵੈਂਟ ਹੁੰਦਾ ਹੈ ਤਾਂ ਪਾਰਸਰ ਫੰਕਸ਼ਨ ਨੂੰ ਬੁਲਾਉਂਦਾ ਹੈ ਤਾਂ ਕਿ ਇਹ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਸਕੇ。
Expat ਪਾਰਸਰ ਈਵੈਂਟ ਅਧਾਰਿਤ ਪਾਰਸਰ ਹੈ。
ਈਵੈਂਟ ਅਧਾਰਿਤ ਪਾਰਸਰ XML ਦਸਤਾਵੇਜ਼ ਦੇ ਸਮੱਗਰੀ 'ਤੇ ਕੇਂਦਰਿਤ ਹੁੰਦਾ ਹੈ ਨਹੀਂ ਬਲਕਿ ਉਨ੍ਹਾਂ ਦੇ ਨਤੀਜੇ 'ਤੇ। ਇਸ ਲਈ ਈਵੈਂਟ ਅਧਾਰਿਤ ਪਾਰਸਰ ਬੇਸਿਕ ਪਾਰਸਰ ਤੋਂ ਤੇਜ਼ੀ ਨਾਲ ਸਮੱਗਰੀ ਪਹੁੰਚਾਉਂਦਾ ਹੈ。
ਹੇਠ ਲਿਖੇ XML ਸ਼ੈਕਟਾਕਸ ਦੇਖੋ:
<from>ਜਾਨ</from>
ਈਵੈਂਟ ਅਧਾਰਿਤ ਪਾਰਸਰ ਉੱਪਰੋਕਤ XML ਨੂੰ ਤਿੰਨ ਈਵੈਂਟਾਂ ਵਜੋਂ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ:
- ਸ਼ੁਰੂ ਹੋਣ ਵਾਲਾ ਐਲੀਮੈਂਟ: from
- CDATA ਹਿੱਸਾ ਸ਼ੁਰੂ ਹੋਇਆ, ਮੁੱਲ: John
- ਬੰਦ ਹੋਣ ਵਾਲਾ ਐਲੀਮੈਂਟ: from
ਉੱਪਰੋਕਤ XML ਉਦਾਹਰਣ ਪ੍ਰਸ਼ਾਸਤ XML ਹੈ। ਪਰ ਇਹ ਉਦਾਹਰਣ ਬੇਵਾਧੀ XML ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਸ ਨਾਲ ਸਬੰਧਤ DTD ਨਹੀਂ ਹੈ ਅਤੇ ਨਾ ਹੀ ਸ਼ਾਮਲ DTD ਹੈ。
ਪਰ ਜਦੋਂ Expat ਪਾਰਸਰ ਦਾ ਉਪਯੋਗ ਕਰਦੇ ਹਾਂ ਤਾਂ ਇਹ ਕੋਈ ਮਿਲਣ ਨਹੀਂ ਹੈ। Expat ਇੱਕ ਵੈਧਤਾ ਪਾਰਸਰ ਨਹੀਂ ਹੈ ਅਤੇ ਕਿਸੇ DTD ਨੂੰ ਨਹੀਂ ਧਿਆਨ ਦਿੰਦਾ。
ਇੱਕ ਈਵੈਂਟ ਅਧਾਰਿਤ ਅਤੇ ਅਨਵਰਤਨ ਵਾਲਾ XML ਪਾਰਸਰ ਹੋਣ ਕਰਕੇ Expat ਤੇਜ਼ ਅਤੇ ਘੱਟ ਖਰਚ ਵਾਲਾ ਹੈ ਅਤੇ ਇਸ ਲਈ PHP ਦੇ web ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਮਸ਼ਹੂਰ ਹੈ。
ਟਿੱਪਣੀਆਂ:XML ਦਸਤਾਵੇਜ਼ ਪ੍ਰਸ਼ਾਸਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਨਹੀਂ ਤਾਂ Expat ਤਰਕਸ਼ਾਲ ਹੋਵੇਗੀ。
ਇੰਸਟਾਲ
XML Expat ਪਾਰਸਰ ਪਹਿਲੀ ਵਾਰ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਤ ਹੈ। ਇਨ੍ਹਾਂ ਫੰਕਸ਼ਨਾਂ ਦਾ ਉਪਯੋਗ ਕਰਨ ਲਈ ਸਥਾਪਤ ਕਰਨਾ ਨਹੀਂ ਚਾਹੀਦਾ。
XML ਫਾਈਲ
ਸਾਡੇ ਉਦਾਹਰਣ ਵਿੱਚ ਹੇਠ ਲਿਖੇ XML ਫਾਈਲ ਦਾ ਉਪਯੋਗ ਕਰਦੇ ਹਾਂ:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>ਜੌਰਜ</to> <from>ਜਾਨ</from> <heading>ਯਾਦਾਤ</heading> <body>ਮੈਂਗੀ ਮੀਟਿੰਗ ਨਾ ਭੁੱਲੋ!</body> </note>
ਚਾਲੂ ਕਰੋ XML ਪਾਰਸਰ
ਅਸੀਂ PHP ਵਿੱਚ XML ਪਾਰਸਰ ਚਾਲੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਵੱਖ-ਵੱਖ XML ਈਵੈਂਟਾਂ ਲਈ ਹੈਂਡਲਰ ਨਿਰਧਾਰਤ ਕਰਨਾ ਅਤੇ ਤਦ ਇਸ XML ਫਾਈਲ ਨੂੰ ਪਾਰਸ ਕਰਨਾ。
ਉਦਾਹਰਣ
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element 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 to use at the end of an element function stop($parser,$element_name) { echo "<br />"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data 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))); } //Free the XML parser xml_parser_free($parser); ?>
以上代码的输出:
-- Note -- To: George From: John Heading: Reminder Message: Don't forget the meeting!
工作原理解释:
- 通过 xml_parser_create() 函数初始化 XML 解析器
- 创建配合不同事件处理程序的的函数
- 添加 xml_set_element_handler() 函数来定义,当解析器遇到开始和结束标签时执行哪个函数
- 添加 xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数
- 通过 xml_parse() 函数来解析文件 "test.xml"
- 万一有错误的话,添加 xml_error_string() 函数把 XML 错误转换为文本说明
- 调用 xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内存
更多 PHP Expat 解析器的信息
如需更多有关 PHP Expat 函数的信息,请访问我们的 PHP XML Parser 参考手册。