XML(可扩展标记语言,eXtensible Markup Language) 是一种在互联网上用于结构化文档交互的数据格式。 它是互联网协会(W3C)定义的一个标准。
支持字符集:ISO-8859-1, US-ASCII 和 UTF-8,默认编码为ISO-8859-1
编码
//将 ISO-8859-1 编码的字符串转换为 UTF-8 编码
utf8_encode(string $data):string
//将用 UTF-8 编码的数据解码为 ISO-8859-1 编码
utf8_decode(string $data):string
创建/释放解析器
//建立一个新的 XML 解析器并返回可被其它 XML 函数使用的资源句柄
xml_parser_create(string $encoding = ?):resource
//建立一个新的支持 XML 命名空间的解析器并返回可被其它 XML 函数使用的资源句柄
xml_parser_create_ns(string $encoding = ? , string $sep = ?):resource
encoding 仅用来指定解析后输出数据的编码
//释放指定的 XML 解析器
xml_parser_free(resource $parser):bool
解析
//解析 XML 文档。已配置事件的处理器根据需要被无限次调用,成功返回1,失败返回0
xml_parse(resource $parser , string $data , bool $is_final = false):int
parser 一个指向将要使用的 XML 解析器的指针
data 需要解析的数据集。您可以多次对新的数据调用 xml_parse() 函数来分段解析一个文档;只要在解析最后一段数据时将 is_final 参数设置为 true。
is_final 如果被设置为 true,则 data 为当前解析中最后一段数据
//将 XML 文件解析到两个对应的数组中,index 参数含有指向 values 数组中对应值的指针。最后两个数组参数可由指针传递给函数。
xml_parse_into_struct(resource $parser , string $data , array &$values , array &$index = ?):int
获取解析结果
//获取指定 XML 解析器当前的行号
xml_get_current_line_number(resource $parser):int
parser 一个指向要获取当前行号的 XML 解析器的指针
//获取指定的 XML 解析器的当前字节索引;如果 parser 没有指向一个合法的解析器,该函数将返回 false,否则将返回解析器当前在其数据缓冲区中的字节索引(起始值为 0)。
xml_get_current_byte_index(resource $parser):int
parser 指向要取得字节索引的 XML 解析器的引用
//获取 XML 解析器的当前列号;如果 parser 参数没有指向一个合法的解析器,该函数将返回 fals
xml_get_current_column_number(resource $parser):int
解析对象
//使得 parser 指定的解析器可以被用在 object 对象中。所有的回叫函数(callback function)都可以由 xml_set_element_handler() 等函数来设置,它们被假定为 object 对象的方法。
xml_set_object(resource $parser , object &$object):bool
设置
//从 XML 解析器获取选项设置信息
xml_parser_get_option(resource $parser , int $option):mixed
parser 指向要获取设置信息的 XML 解析器的指针
option 要获取的设置选项名称。可以使用 XML_OPTION_CASE_FOLDING 和 XML_OPTION_TARGET_ENCODING 常量
//为指定 XML 解析进行选项设置,如果 parser 参数没有指向一个合法的解析器或者指定的选项无法设置,该函数将返回 false,否则将会把选项设置为指定的值并返回 true。
xml_parser_set_option(resource $parser , int $option , mixed $value):bool
parser 指向要设置选项信息的 XML 解析器的指针
option 要设置的选项名称
XML_OPTION_CASE_FOLDING 控制在该 XML 解析器中 大小写折叠(case-folding) 是否有效。其默认值为有效。
XML_OPTION_SKIP_TAGSTART 指明在一个标记名前应略过几个字符。
XML_OPTION_SKIP_WHITE 是否略过由白空字符组成的值
XML_OPTION_TARGET_ENCODING 设置该 XML 解析器所使用的目标编码(target encoding)方式。
value 要给选项设置的新值
设置处理函数
//为 parser 变量指向的 XML 解析器指定字符数据处理函数
xml_set_character_data_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于建立字符数据处理器
handler 为表示一个函数名称的字符串,该函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。handler(resource $parser , string $data)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
data 第二个参数 data 为包含有字符数据的字符串
//为 parser 指定的 XML 处理器建立默认处理函数。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_default_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于建立字符数据处理器
handler 为表示一个函数名称的字符串,该函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。handler(resource $parser , string $data)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
data 第二个参数 data 为包含有字符数据的字符串。其内容可以是 XML 声明、文档类型声明、实体名或者其它没有已存在处理器的地数据。
//为 parser 参数指定的 XML 解析器建立元素处理器函数。参数 start_element_handler 和 end_element_handler 为表示函数名称的字符串,这些函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_element_handler(resource $parser , callable $start_element_handler , callable $end_element_handler):bool
parser XML 解析器的引用,用于建立起始和终止元素处理器。
start_element_handler 由 start_element_handler 参数命名的函数名必须接受三个参数
start_element_handler(resource $parser , string $name , array $attribs)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
name 第二个参数 name 为该处理器为之被调用的元素名。如果大小写折叠(case-folding)对该解析器有效,元素名将用大写字母表示。
attribs 为一个包含有对应元素的属性的数组(如果该元素有属性)。数组元素的下标为属性名,元素的值即为属性的值
end_element_handler end_element_handler(resource $parser , string $name)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
name 第二个参数 name 为该处理器为之被调用的元素名。如果大小写折叠(case-folding)对该解析器有效,元素名将用大写字母表示
//设置离开名称空间声明范围时要调用的处理程序。对于每个名称空间声明,将在声明了名称空间的元素的结束标记的处理程序之后调用此方法。如果将处理程序函数设置为空字符串或false,则将禁用所涉及的处理程序
xml_set_end_namespace_decl_handler(resource $parser , callable $handler):bool
parser 对XML解析器的引用。
handler 是一个字符串,其中包含在调用xml_parse()时必须存在的函数的名称
handler(resource $parser , string $prefix)
parser 第一个参数parser是对调用处理程序的XML解析器的引用。
prefix 前缀是一个字符串,用于引用XML对象中的名称空间。
//为 parser 参数指定的 XML 解析器建立外部实体指向处理器函数。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_external_entity_ref_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于建立外部实体指向处理器。
handler handler(resource $parser , string $open_entity_names , string $base , string $system_id , string $public_id)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
open_entity_names 第二个参数 open_entity_names 是为该实体的解析开放的实体名列表(包括被指向的实体名),这些实体名由空格隔开
base 这个参数是解析外部实体的系统标识符(system_id)的基础。当前该参数通常都被设置为空字符串
system_id 第四个参数 system_id 是在实体定义声明中指定的系统标识符。
public_id 第五个参数 public_id 是在实体定义声明中指定的公共标识符,如果未指定任何标识符,则该字符串为空。公共标识符中的空格将按照 XML 的要求被正常化
//为 parser 参数指定的 XML 解析器建立注释声明处理器函数。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_notation_decl_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于设置声明处理器函数。
handler handler(resource $parser , string $notation_name , string $base , string $system_id , string $public_id)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
notation_name 该参数为以上注释格式定义中的 name 参数。
base 这个参数是解析注释声明的系统标识符(system_id)的基础。当前该参数通常都被设置为空字符串。
system_id 外部注释声明的系统标识符。
public_id 外部注释声明的公共标识符
//为 parser 参数指定的 XML 解析器建立处理指令(PI)处理器函数。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_processing_instruction_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于建立处理指令(PI)处理器。
handler handler(resource $parser , string $target , string $data)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
target 第二个参数 target 为 PI 对象(PI target)。
data 第三个参数 data 包含了 PI 数据
//设置在声明名称空间时要调用的处理程序。命名空间声明出现在开始标记内。但是,对于在该开始标记中声明的每个命名空间,在开始标记处理程序之前调用名称空间声明开始处理程序。如果将处理程序函数设置为空字符串或false,则将禁用所涉及的处理程序。
xml_set_start_namespace_decl_handler(resource $parser , callable $handler):bool
parser 对XML解析器的引用。
handler handler(resource $parser , string $prefix , string $uri)
parser 第一个参数parser是对调用处理程序的XML解析器的引用。
prefix 前缀是一个字符串,用于引用XML对象中的名称空间。
uri 命名空间的统一资源标识符(URI)
//为 parser 参数指定的 XML 解析器建立未解析实体定义声明处理器函数。当 XML 解析器遇到如下含有 NDATA 声明的外部实体定义声明时,该 handler 处理器将被调用。如果处理器函数名被设置为空字符串或者 false,则该有问题的处理器将被屏蔽。
xml_set_unparsed_entity_decl_handler(resource $parser , callable $handler):bool
parser XML 解析器的引用,用于建立未解析实体定义声明处理器。
handler handler(resource $parser , string $entity_name , string $base , string $system_id , string $public_id , string $notation_name)
parser 第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
entity_name 将被定义的实体名。
base 这个参数是解析外部实体的系统标识符(system_id)的基础。当前该参数通常都被设置为空字符串。
system_id 外部实体的系统标识符。
public_id 外部实体的公共标识符。
notation_name 该实体的注释名
错误
//获取 XML 解析器错误代码
xml_get_error_code(resource $parser):int
//根据给定的 code 获得 XML 解析器错误字符串
xml_error_string(int $code):string