SimpleXML Parser
- SimpleXML 是基于树的 xml 解析器
- 适合 xml 比较小的场合
<?php
$xml = simplexml_load_file("config.xml") or die("无法打开文件");
if ($xml === false) {
echo "解析错误:";
foreach (libxml_get_errors() as $error) {
echo "<br>" . $error->message;
}
} else {
print_r($xml);
echo "<br>";
echo "ip: " . $xml->ip . "<br>";
echo "name: " . $xml->name . "<br>";
echo "addr: " . $xml->addr . "<br>";
echo "location of item 0: " . $xml->item[0]->location . "<br>";
foreach ($xml->item as $item) {
echo "location: " . $item->location . ", price: " . $item->price . "<br>";
}
echo "desc of item 0: " . $xml->item[0]['desc'] . "<br>";
}
?>
Expat Parser
- Expat Parser 是基于事件的解析器
- 适合 XML 较大的场合
<?php
$parser = xml_parser_create();
function start($parser, $elementName, $elementAttrs) {
echo $elementName . " ";
}
function stop($parser, $elementName) {
echo "<br>";
}
function data($parser, $data) {
echo $data;
}
xml_set_element_handler($parser, "start", "stop");
xml_set_character_data_handler($parser, "data");
$f = fopen("config.xml", "r");
while ($data = fread($f, 1024)) {
xml_parse($parser, $data, feof($f)) or
die(
"line: " . xml_get_current_line_number($parser) .
", Error: " . xml_error_string(xml_get_error_code($parser))
);
}
xml_parser_free($parser);
?>