首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

xml_set_object

(PHP 4, PHP 5, PHP 7)

xml_set_object - 在对象中使用XML解析器

描述

代码语言:javascript
复制
bool xml_set_object ( resource $parser , object &$object )

这个函数允许在对象内部使用解析器。 所有的回调函数都可以用xml_set_element_handler()等来设置,并假定它是对象的方法。

警告

除了在解析完成时调用xml_parser_free()之外,从PHP 7.0.0开始,还必须显式取消引用parser以避免内存泄漏。

参数

parser

对在对象中使用的XML解析器的引用。

object

使用XML解析器的对象。

返回值

成功时返回TRUE或失败时返回FALSE

例子

示例#1 xml_set_object()示例

代码语言:javascript
复制
<?php
class XMLParser
{
    private $parser;

    function __construct() 
    {
        $this->parser = xml_parser_create();

        xml_set_object($this->parser, $this);
        xml_set_element_handler($this->parser, "tag_open", "tag_close");
        xml_set_character_data_handler($this->parser, "cdata");
    }

    function __destruct()
    {
        xml_parser_free($this->parser);
        unset($this->parser);
    }

    function parse($data) 
    {
        xml_parse($this->parser, $data);
    }

    function tag_open($parser, $tag, $attributes) 
    {
        var_dump($tag, $attributes); 
    }

    function cdata($parser, $cdata) 
    {
        var_dump($cdata);
    }

    function tag_close($parser, $tag) 
    {
        var_dump($tag);
    }
}

$xml_parser = new XMLParser();
$xml_parser->parse("<A ID='hallo'>PHP</A>");
?>

上面的例子将输出:

代码语言:javascript
复制
string(1) "A"
array(1) {
  ["ID"]=>
  string(5) "hallo"
}
string(3) "PHP"
string(1) "A"

← xml_set_notation_decl_handler

xml_set_processing_instruction_handler →

扫码关注腾讯云开发者

领取腾讯云代金券