2009-06-15 9 views
6

XMLDocumentオブジェクトに不正な形式のHTMLを読み込もうとしていますが、余分な開始/終了タグがあり、代わりに<img >などの不正なXMLタグがあるため、XMLExceptionsで失敗します。 <img />不正なXMLを解析する

データのすべてのエラーをXMLで解析するにはどうすればよいですか?これらのエラーを修正するために、解析する前に私が適用できるXMLバリデーターはありますか?または、例外を処理することは何でも解析できますか?

+0

奇形のアイデアがある場合は、例外を処理して試してみます... – abmv

+0

その型が間違っていると、それは怒り(XMLException)をスローし、それをまったく解析しません! childNodesは存在しません。 –

+0

http://stackoverflow.com/questions/28909882/dealing-with-malformed-xml – Sobrique

答えて

14

HTML Agility Packを解析しますxhtmlではなくhtmlであり、非常に寛容です。 XmlDocumentを使用した場合、オブジェクトモデルは使い慣れたものになります。

+1

これは、エンドタグが見つからないノードのツリーを含むXMLでうまく機能しました。提案していただきありがとうございます! –

0

あなたがしようとしていることは非常に困難です。 XMLは厳密でHTMLはそうでないため、XMLパーサを使用してHTMLを解析することはできません。そのHTMLが準拠したXHTML(XMLとしてのHTML)であった場合、XMLパーサーは問題なくHTMLを解析します。

本当にHTML用のXMLパーサーを使用する場合は、そこにHTMLからXHTMLコンバーターがあるかどうかを確認することをお勧めします。言い換えれば

、私は不正な形式のXMLを扱うXMLパーサーを満たすためには至っていない...彼らは(:)あまりにも、正当な理由のために)HTMLのような緩やかなマークアップを受け入れるように設計されていない

2

this questionをご確認ください。

基本的には、beautifulsoupの.NETポートとHTMLの敏捷性パックの間には道があります。

1

このレベルの不正な構造を持つXmlDocumentを構築することはできません。 XmlDocument(私の知る限り)は、XMLコンテンツが適切なネストとクロージャの構文に準拠していることを要求しています。

ただし、代わりにこれをXmlReaderで解析できると考えられます。特定の重大なエラーが発生した場合でも例外をスローする可能性がありますが、MSDNドキュメントによれば、少なくともエラーの場所を開示することができます。

ちょうどHTMLを扱っている場合は、HTML Agility Packがあります。これはあなたの目的に役立ちます。

0

不正な形式のXMLをXmlDocumentに読み込むことはできません。

は彼特有のニーズONTによってはCodePlexの

1

Html Agility Packをチェックアウト、あなたはXMLDocumentオブジェクトを使用して、それをインポートし、クリーンアップに文書をHTML Tidyを使用することができるかもしれません。