2017-07-20 11 views
0

私は、HTMLのagility packを使用して、データベースエントリの不正なhtmlを削除しています。 SelectSingleNode(xpath).Remove();を使用してノードを削除しようとしています。これはエラーをスローしていますhtmのxPathでナビゲートできる子ノードの最大数lAgility pack

System.Xml.XPath.XPathException: 'xpathクエリが複雑すぎます。

xPathを使用しているときにナビゲートできるノードの最大数があるか、このエラーが発生している別の理由がありますか。私はテストでノードの数を減らし、xPathは問題なく動作しました。以下はこの例外をスローするxpathです。 (それが厄介である)


/p[1]/span[1]/span[1]/strong[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1] 


注:私は配置バグ修正の上ですのでこれをやりたいと思った理由はあります。レポートをロードするときにラッドエディタが壊れるまで気付かれないままになっていたラドエディタのバグのために、不必要なhtmlで詰め込まれたデータベースにhtmlエントリが格納されています。私はすべてのHTMLを削除することはできませんので、HTMLタグに格納されているスタイリングを維持する必要があります。

+0

このエラーが発生した場合、明らかに最大値があります。途中で要素が検索できないIDはありますか? .. –

+0

それは何千ものレコードのために私は動的には(少なくとも私ができるとは思わない)見つけることができない、私は悪いhtmlを減らそうとする2つの方法を書いた。すべての子タグをループし、同じものを実行して同じ内部のテキストとスタイルを持つ同じタイプのタグを削除します。これは、これが発生していた他の悪いレコードの問題を解決しましたが、現在のhtmlを1500文字だけ減らし、xpathは依然として非常に複雑です。 – Kevin

+0

htmlはまた、最初の2つのメソッドが意図したとおりに動作しない理由である混乱です。私は編集し、私はxpathでタグを削除しようとしているメソッドを添付します – Kevin

答えて

0

私はこのことについてもう少しテストをしました。それ以上の511要素を超えることはできないようです。これはxPathのパス以外の式を持たないノードにナビゲートするためのXPathです

関連する問題