对数据进行解析是应用开发必不可少的一个环节。下面是使用XML Parser对XML文档进行解析的过程:
<?php
// 处理开始元素函数
function startElementHandler($parser, $element, $attributes) {
echo "元素开始:".$element."<br>";
if($attributes) {
echo "属性:";
foreach ( $attributes as $key => $value ) {
echo $key."=".$value." ";
}
echo "<br>";
}
}
// 处理结束元素函数
function endElementHandler($parser, $element) {
echo "元素结束:".$element."<br><br>";
}
// 处理字符串数据函数
function characterDataHandler($parser, $data) {
if(trim($data)) {
echo "字符串数据:".htmlspecialchars($data)."<br>";
}
}
// 处理解析错误函数
function parserError($parser) {
$code = xml_get_error_code($parser);
$error = xml_error_string($code);
$errorColumn = xml_get_current_column_number($parser);
$errorLine = xml_get_current_line_number($parser);
return "错误代码:".$code." 错误:".$error."在第".$errorLine."行第".$errorColumn."列";
}
// 创建解析器
$parser = xml_parser_create();
// 注册元素处理函数
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");
// 获取文件内容
$xml = file_get_contents("parser.xml");
// 开始解析parser.xml文档,解析错误就调用错误处理函数
xml_parse($parser, $xml) or die(parserError());
// 删除解析器并释放内存
xml_parser_free($parser);
?>
我们给定的XML示例是:
<?xml version="1.0" encoding="UTF-8"?> <phpedu> <title>PHP100</title> <item type="text" name="item"> <contents type="text">PHP</contents> <contents>SQL</contents> <contents>Linux</contents> <contents>Apache</contents> </item> <address type="URL">www.php100.com</address> </phpedu>
多说一句:希望对您有所帮助!不同语言对XML的解析区别于形式,统一于本质!:)
代码来源:《PHP 开发实战权威指南》