php 使用expat方式解析xml文件操作示例
本文实例讲述了php 使用expat方式解析xml文件操作。分享给大家供大家参考,具体如下:
test.xml:
<?xml version="1.0" encoding="UTF-8"?> <notes> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <note> <to>George2</to> <from>John2</from> <heading>Reminder2</heading> <body>Don't forget the meeting!2</body> </note> <instances> <instance st="192.168.234.121" /> <instance st="192.168.234.28" /> </instances> </notes>
PHP文件:
<?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, 10)) { // 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))); // } // fclose($fp); $data = file_get_contents("test.xml"); xml_parse($parser, $data) 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!-- Note --
To: George2
From: John2
Heading: Reminder2
Message: Don't forget the meeting!2