gpt4 book ai didi

PHP XML Expat 解析器

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 10012 100
gpt4 key购买 nike

基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了对树中元素的访问,例如文档对象模型 (DOM)。 基于时间的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。 Expat 解析器是基于事件的解析器。

基于事件的解析器集中在 XML 文档的内容,而不是它们的结构。正因为如此,基于事件的解析器能够比基于树的解析器更快地访问数据。

请看下面的 XML 片段:


上面的 XML 实例包含了形式良好的 XML。不过这个实例是无效的 XML,因为没有与它关联的文档类型声明 (DTD)。

然而,在使用 Expat 解析器时,这没有区别。Expat 是不检查有效性的解析器,忽略任何 DTD。

作为一款基于事件、非验证的 XML 解析器,Expat 快速且轻巧,十分适合 PHP 的 Web 应用程序。

注释:XML 文档必须形式良好,否则 Expat 会生成错误。


我们要在 PHP 中初始化 XML 解析器,为不同的 XML 事件定义处理器,然后解析这个 XML 文件。


//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,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)));
}

//Free the XML parser
xml_parser_free($parser);
以上代码将输出:

10012 100 3
文章推荐: PHP SimpleXML
文章推荐: PHP XML DOM
文章推荐: PHP 数据库 ODBC
文章推荐: PHP MySQL 读取数据
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com