DOM, XML, HTML
Aprenda como selecionar nós com seletores CSS em PHP, converter DOM em elementosArray e Array vice-versa.
Carregar HTML
Carrega um documento HTML a partir de uma string:
use Inphinit\Dom\Document;
$handle = new Document(Document::HTML);
$handle->load('Hello World!bar');
var_dump($handle->document());
var_dump($handle->root());
Carregar XML
Carrega um documento XML a partir de uma string:
use Inphinit\Dom\Document;
$handle = new Document(Document::XML);
$handle->load('contents baz ');
var_dump($handle->document());
var_dump($handle->root());
Carregar arquivos
Carregar arquivos XML e HTML
use Inphinit\Dom\Document;
// parse XML
$handle = new Document(Document::XML);
$handle->load('sample.xml', true);
// parse HTML
$handle = new Document(Document::HTML);
$handle->load('sample.html', true);
É possível carregar documentos remotos, mas é importante tomar algumas precauções e definir o contexto dos fluxos para o próximo carregamento apropriado, de acordo com a documentação: https://www.php.net/manual/en/function.libxml-set-streams-context.php.
use Inphinit\Dom\Document;
$opts = array(
'http' => array(
'user_agent' => 'PHP libxml agent',
)
);
$context = stream_context_create($opts);
libxml_set_streams_context($context);
// parse HTML
$handle = new Document(Document::HTML);
$handle->load('sample.html', true);
Serializar para uma string HTML ou XML
Para converter o documento em uma string, utilize o método Inphinit\Dom\Document::dump():
use Inphinit\Dom\Document;
// parse XML
$handle = new Document(Document::XML);
$handle->load('sample.xml', true);
echo $handle->dump();
Salvar em um arquivo
Se precisar de um conversor para uma string, você pode usar o método Inphinit\Dom\Document::save($file)
use Inphinit\Dom\Document;
// parse XML
$handle = new Document(Document::XML);
$handle->load('sample.xml', true);
$handle->save('foobar.xml');
Alterar o comportamento de serialização
Se você estiver usando XML (ex: new Document(Document::XML)), os métodos Inphinit\Dom\Document::dump() and Inphinit\Dom\Document::save($file) podem ter seu comportamento modificado de acordo com a libXML (que pode variar dependendo da versão). Valores suportados:
If you are using XML (e.g., new Document(Document::XML)), the Inphinit\Dom\Document::dump() and Inphinit\Dom\Document::save($file) methods may have their behavior modified according to libXML (which may vary depending on the version). Supported values:
-
LIBXML_NOEMPTYTAGExpandir tags vazias (por exemplo,<br/>para<br></br>) -
LIBXML_NOXMLDECL: Remover a declaração XML (PHP 8.3+ / Libxml >= 2.6.21)
use Inphinit\Dom\Document;
$handle = new Document(Document::XML);
$handle->setSaveOptions(LIBXML_NOEMPTYTAG|LIBXML_NOXMLDECL);
$handle->fromArray([...]);
$handle->dump($handle->root());
Matriz com DOM
A biblioteca suporta conversão bidirecional entre XML/HTML e arrays. Consulte DOM com Arrays para obter detalhes.
Seletor DOM com
Os seletores CSS são geralmente mais convenientes do que o XPath. Por esse motivo, o framework oferece suporte a seletores no estilo CSS. Consulte a seção Seletores CSS em PHP para obter mais detalhes.
Métodos
| Método | Descrição |
|---|---|
__construct(int $type = 0) |
Use new Document(Document::XML) para definir o documento como XML e, no caso de HTML, use new Document(Document::HTML) |
setSeverityLevels(int $levels) |
Defina o nível de severidade do libxml, que afetará o comportamento de possíveis exceções durante a análise do documento. Veja mais detalhes em Erros DOM. |
setLoadOptions(int $options) |
Defina as opções do libXML para carregar um documento ou uma string. |
setSaveOptions(int $options) |
Defina as opções do libXML para despejar ou salvar um documento como arquivo. |
document() |
Obtenha o documento original. |
root() |
Obter elemento raiz. |
selector() |
Retorna Inphinit\Dom\Selector uma instância. |
getNamespaces(DOMElement $element) |
Obtenha os atributos do namespace a partir do elemento raiz ou de um elemento específico. |
load(string $source, bool $file = false) |
Carregar string ou arquivo. Consulte setLoadOptions() o método. |
dump(DOMNode $node) |
Serializa o documento como uma string XML/HTML. |
save(string $file) |
Serializa o documento como um arquivo XML/HTML. |
fromArray(array $data) |
Converter Array em DOM. Veja mais detalhes em Array para HTML. |
toArray(int $format) |
Converter DOM em Array. Veja mais detalhes em DOM para Array. |