PHPCon Poland 2024

xml_parser_set_option

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parser_set_optionDefine opções em um analisador XML

Descrição

xml_parser_set_option(XMLParser $parser, int $option, string|int|bool $value): bool

Define uma opção em uma analisador XML.

Parâmetros

parser

Uma referência ao analisador XML ao qual se deseja definir uma opção.

option

Qual a opção a definir. Veja abaixo.

As opções a seguir estão disponíveis:

Opções do analisador XML
Constante da opção Tipo de dados Descrição
XML_OPTION_CASE_FOLDING bool Controla se case-folding está habilitado para este analisador XML. Ativado por padrão.
XML_OPTION_SKIP_TAGSTART integer Especifica quantos caracteres devem ser ignorados no início do nome de uma etiqueta.
XML_OPTION_SKIP_WHITE bool Controla se deve-se ignorar valores constituídos por espaços em branco.
XML_OPTION_TARGET_ENCODING string Define qual codificação de destino será usada neste analisador XML. Por pradrão, é definida com a mesma codificação usada por xml_parser_create(). Codificações de destino suportadas são ISO-8859-1, US-ASCII e UTF-8.

value

O novo valor da opção.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Erros/Exceções

Lança uma exceção ValueError quando um valor inválido é passado em option.

Antes do PHP 8.0.0, passar um valor inválido em option gerava um erro de nível E_WARNING e também fazia a função retornar false.

Registro de Alterações

Versão Descrição
8.3.0 O parâmetro value agora aceita booleanos. As opções XML_OPTION_CASE_FOLDING e XML_OPTION_SKIP_WHITE são agora opções booleanas.
8.0.0 O parâmetro parser agora espera uma instância de XMLParser; anteriormente, um resource xml válido era esperado.
8.0.0 Uma exceção ValueError agora é lançada se option for inválido.
add a note

User Contributed Notes 3 notes

up
2
www.thomaskoch.it
15 years ago
The option XML_OPTION_SKIP_WHITE has no effect in my PHP 5.2.6 (with expat-1.95.8-5). To skip cdata composed of white space only, simply check for that at the beginning of your cdata callback function:

<?php
function callback_cdata($parser, $cdata)
{
if(!
trim($cdata))
return;

// ... continue processing ...
}
?>
up
1
pupeno at pupeno dot com
21 years ago
XML is case sensitive, then, from my point of view, disabling case folding doesn't goes against xml 1.0 specifications but the contrary, disabling case folding allow us to distiguish between diferent cases of the same letter ('a' and 'A') which of XML are two diferent things.
From my point of view, disabling case folding is a good practice and I think it should be disabled by default.
More information on:
http://www.isacat.net/2001/xml/case.htm
and
http://www.w3.org/TR/REC-xml
Thank you.
up
0
j[no_spam_please] at [thx]jessepearson dot net
17 years ago
In the function below, you need to update two lines if you don't want php to throw warnings.

change these two:
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];

to this:
$elements[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes'];
$elements[$index]['content'] = empty($tag['value']) ? "" : $tag['value'];
To Top