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('contentsbaz'); 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_NOEMPTYTAG Expandir 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.
Página inicial
Apoie com uma estrela no GitHub