2011-09-26 7 views
5

私はウェブサイトのソースを引き出しています。私はそれからその特定の部分を抽出したいと思います。私の意図はLINQ-to-XMLでこれを行うことです。私はソースを解析するときXElement.Load()の "宣言されていない接頭辞"エラーの回避策

はしかし、私はエラーを取得:

XElement source = XElement.Load(reader); 

問題は、私が持っていない名前空間への参照のようです。原因この行に'addthis' is an undeclared prefix. Line 130, position 51.:私はエラーを取得する

<div class="addthis_toolbox addthis_pill_combo" addthis:url="http://www.foo.com/foo"> 

をそして、私は1つを削除した場合、その他が発生します。

これはです。私はこのXMLファイルを1つだけ気にしています。ファイル全体を解析する必要はありません。私はそれをXElementに入れたいので、その1つを見つけることができます。解析エラーをハックする方法はありますか?そして、私は汎用的な解決策が必要です - 私は何のファイルにもかかわらず、ファイルを解析したいundeclared prefixエラー。

ありがとうございました

答えて

5

このXMLは無効です。

名前空間プレフィックス(addthis:など)を使用するには、xmlns:addthis="some URI"と入力して名前空間を宣言する必要があります。

一般に、HTMLはXML以外の理由(宣言されていないエンティティ、エスケープされていないJS、閉じられていないタグなど)のため、無効なXMLである可能性が高いため、XMLパーサーを使用してHTMLを解析しないでください。
代わりにHTML Agility Packを使用してください。

+0

あなたは正しいのですが、私は尋ねるとちょっとばかげています。リンクをありがとう、それは私が必要なものだと思われる。 –

関連する問題