PHP XML ?? ???
PHP XML Expat Parser
XML? ??????? ?? ???? ???? ???? ?? ???? ???? ?? ?????. ?? ?? ??????? ???? ?? ??? ?? ?? ???? XML ?? ???? ???? ??? ????. ??? ??? ????? ???????? ?? ??? ?? ?? ???? ?? ? ??, ?? ????? XML? ??? ????? ???? ???? ??? ???? ?? ? ??? ????.
??? Expat ??? ???? PHP?? XML ??? ??? ? ????.
XML?? ??????
XML? "eXtensible Markup Language"? ???, HTML? ??? ??? ?????. ??? HTML? ?? XML? ?? ???? ???? ???? ???? ? ???? ?? HTML? ?? ???? ???? ? ?????.
XML? ???? ????? ??? ?? ???? ???? ? ?????. XML ??? ???? ??? ?????.
XML?? ?? ??? ??? ????. ???? ??? ???? ???.
?:
<?xml version="1.0"?> <threads> <thread> <title>Welcome </title> <author>Simon </author> <content>Welcome to XML guestbook!! </content> <thread> </threads>
XML ??? ? ??? ????? XML ???? ?? ??? ???? ? <?xml version="1.0"?> ?? ?? ??.
<thread> ? <thread> ??? ?? ???? ?????. ????? ??, ???, ??? ?? ??? ???? ???? ?????.
XML? ?? ??? ????? XML ????? ?????.
Expat? ??????
XML ??? ?? ????(?? ? ??)??? XML ??? ?????.
XML ??? ? ?? ?? ??? ????.
1. ?? ?? ??: ? ??? XML ??? ?? ??? ?????. ?? ??? ???? DOM(?? ?? ??)? ?? ??? ??? ?? ???? ?????.
2. ??? ?? ??: XML ??? ??? ???? ?????. ?? ???? ???? ??? ?? ???? ??? ?????.
Expat ??? ??? ?? ?????.
??? ?? ??? ????? XML ??? ??? ??? ???. ? ??? ??? ?? ??? ?? ?? ???? ? ??? ???? ???? ? ????.
?? XML ??? ?????.
<from>Jani</from>
??? ?? ??? ?? XML? ?????. ? ?? ???? ???:
?? ??: from
?? CDATA ??, ?: Jani
?? ??: from
?? XML ? ? ???? ????. -??? XML. ??? ? ????? ??? DTD(?? ?? ??)? ?? ??? ??? XML???.
??? Expat ??? ??? ?? ??? ??? ????. Expat? ???? ???? ?? DTD? ???? ?????.
??? ??? ???? ?? XML ??? Expat? ??? ???? PHP ? ??????? ??????.
??: XML ??? ??? ????? ???. ??? ??? Expat?? ??? ?????.
??
XML Expat ?? ??? PHP ??? ?? ?????. ? ??? ???? ?? ??? ???? ????.
XML ??
?? XML ??? ? ??? ?????:
<?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>
XML ?? ???
PHP?? XML ??? ????? ??? XML ???? ?? ???? ??? ?? 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); ?>
? ??? ??? ?????:
-- ?? --
To: Tove
From: Jani
?? : ??
???: ?? ??? ?? ?? ???!
?? ??:
1. xml_parser_create() ??? ?? XML ??? ??????
2. ??? ??? ???? ???? ??? ????.
3. xml_set_element_handler() ??? ???? ??? ?? ? ? ??? ??? ? ??? ??? ?????.
4. ) ??? ???? ??? ?? ???? ??? ? ??? ??
5. xml_parse() ??? ???? "test.xml" ??? ?? ?????
6. xml_error_string() ??? ???? XML ??? ??? ???? ??
7. xml_parser_free() ??? ???? xml_parser_create() ??? ??? ???? ?????
PHP Expat? ?? ?? ?? ??
PHP Expat ??? ?? ??? ????? PHP XML ?? ?? ???? ?????.