xml 解析器。
语法: int xml_parser_create(string [encoding]);
返回值: 整数
函数种类: 资料处理
内容说明
本函数用来初始化一个新的 xml 解析器。参数 encoding 可省略,为 xml 使用的字符集,默认值为 iso-8859-1,其它尚有 us-ascii、utf-8 二种。成功则返回 parser 代码供其它函数使用,失败则返回 false 值。
*/
$xmlfile='test.xml'; //定义一个xml文件
$xmlparser=xml_parser_create(); //建立一个xml解析器
$fp=fopen($xmlfile,'r'); //打开一个文件并读取数据
while($xmldata=fread($fp,4096)) //循环读取文件内容
{
if(!xml_parse($xmlparser,$xmldata,feof($fp))) //解析xml数据,如果失败输出错误信息
{
die(print "error:".
xml_error_string(xml_get_error_code($xmlparser))."
"."line:".
xml_get_current_line_number($xmlparser)."
"."column:".
xml_get_current_column_number($xmlparser)."
");
}
}
xml_parser_free($xmlparser); //释放xml解析器
/*
php 5 开始,自动侦测输入的 xml 的编码,因此 encoding 参数仅用来指定解析后输出数据的编码
在 php 5.0.0 和 5.0.1 总,默认输出的字符编码是 iso-8859-1,而 php 5.0.2 及以上版本是 utf-8。解析器支持的编码有 iso-8859-1, utf-8 和 us-ascii
bool xml_parser_free ( resource parser )
parser
指向要释放的 xml 解析器的指针。
如果 parser 参数没有指向一个合法的解析器,该函数将返回 false,否则将释放指定的解析器并返回 true
*/
$simple="
$p=xml_parser_create(); //创建xml解析器
xml_parse_into_struct($p,$simple,$vals,$index); //将数据解析到数组
xml_parser_free($p); //释放xml解析器
echo "index arrayn";
print_r($index); //输出结果数组
echo "nvals arrayn";
print_r($vals);
/*输出结果为:
index array
array
(
[para] => array
(
[0] => 0
[1] => 2
)
[note] => array
(
[0] => 1
)
)
vals array
array
(
[0] => array
(
[tag] => para
[type] => open
[level] => 1
)
[1] => array
(
[tag] => note
[type] => complete
[level] => 2
[value] => simple note
)
[2] => array
(
[tag] => para
[type] => close
[level] => 1
)
)
*/