DOMDocument: Ignore Duplicate Elemento IDs
-
03-07-2019 - |
Pergunta
Estou colocando alguns conteúdos da página (que foi executado através de Tidy, mas não precisa ser, se esta é uma fonte de problemas) em DOMDocument
usando DOMDocument::loadHTML
.
Está vindo acima com vários erros:
ID já x definido na Entidade, linha X
Existe alguma maneira para fazer qualquer DOMDocument
(ou Tidy) ignorar ou retirar IDs de elemento duplicados, por isso vai realmente criar o DOMDocument
?
Graças. :)
Solução
Uma rápida pesquisa sobre o assunto revela este (incorreta) relatório de erro:
http://bugs.php.net/bug.php?id=46136
A última resposta afirma o seguinte:
Você está usando HTML 4 regras para carregar um documento XHTML. Ou utilizar a carga () método para analisar como XML ou o função libxml_use_internal_errors () a ignorar os avisos.
Eu não posso ter certeza se você está enfrentando esse problema, pelas mesmas razões, uma vez que não incluem uma referência à página HTML que está sendo carregado. Em qualquer caso, usando libxml_use_internal_errors()
deve pelo menos suprimir o erro.
ID de em documentos HTML são normalmente única , de modo que o melhor solução ainda seria validar seu documento, se possível.
Outras dicas
Por definição, IDs são únicos. Se não forem, você deve usar as classes em vez (nem nomes, onde aplicável).
Eu duvido que você pode forçar ferramentas XML ignorar IDs duplicados, que irá torná-los lidar com um documento XML inválido.
Utilize Exceções para tratar IDs duplicados, e renomear o segundo id. Ou talvez, combinar elementos em sub-elementos do mesmo pai com o ID.
IDs são únicos em um arquivo XML (no RootElement de XMLTree)