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. :)

Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top