Pergunta

Eu estou tentando carregar um pedaço de (possivelmente) malformado HTML em um objeto XMLDocument, mas ele falha com XMLExceptions ... desde que há abertura de cama / fechar tags e tags XML malformados como <img > vez de <img />

Como faço para obter o XML para analisar com todos os erros nos dados? Existe alguma validador XML que eu possa aplicar antes da análise, para corrigir esses erros? Ou será que lidar com o parse exceção alguma pode ser analisado?

Foi útil?

Solução

O href="http://www.codeplex.com/htmlagilitypack" rel="noreferrer"> HTML agilidade pack irá analisar HTML, em vez de xhtml, e é bastante perdoando. O modelo de objeto será familiar se você já usou XmlDocument.

Outras dicas

Você pode querer verificar a resposta para esta questão .

Basicamente em algum lugar entre uma porta NET de BeautifulSoup eo pacote de agilidade HTML há um caminho.

É improvável que você será capaz de construir um XmlDocument que tem este nível de estrutura malformada. XmlDocument (que eu saiba) exige que aderem conteúdo XML para nidificação adequada e sintaxe fechamento.

No entanto, você suspeitar que você pode analisar isso com um XmlReader em vez. Ela ainda pode lançar exceções se certos erros flagrantes são encontrados, mas de acordo com a documentação do MSDN, pode, pelo menos, revelar a localização dos erros.

Se você está lidando apenas com HTML, há a HTML agilidade pack , que pode servir os seus propósitos.

Dependendo ont ele necessidades específicas, você pode ser capaz de usar HTML Tidy para limpeza do documento, em seguida, importá-lo usando o objeto XMLDocument.

O que você está tentando fazer é muito difícil. HTML não pode ser analisado usando um parser XML desde XML é rigorosa e HTML não é. Se isso HTML foram compatível com XHTML (HTML como XML), então um parser XML iria analisar o HTML sem problema.

Você pode querer ver se há qualquer HTML para conversores XHTML lá fora, se você realmente quiser usar um parser XML para HTML.

Em outras palavras, eu ainda não encontrei um analisador XML que lida com XML malformado ... eles não são projetados para aceitar marcação frouxa como HTML (por uma boa razão, também :))

Você não pode carregar XML malformado em um XmlDocument.

Confira o Html agilidade Pacote no CodePlex

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